はじめに
Auth0のユーザー登録はUniversal Loginから行うことができますが
Embedded Loginで独自のUIを作っていてユーザーの新規登録機能を独自で作りたい場合や
Auth0のテナント管理者側でユーザーを登録したい場合など
APIを利用してユーザーを登録したいケースもあるかと思います。
今回はAuthnetication APIとManagement APIのそれぞれに用意されているユーザー登録のAPIを利用して
Auth0のデータベースにユーザーを登録してみました。
Authentication API
Authentication APIの場合は/dbconnections/signup
というAPIが用意されています。
以下のようにPOSTリクエストを送信するとユーザーが作成されます。
POST https://{テナントのドメイン}/dbconnections/signup HTTP/1.1
Content-Type: application/json
{
"client_id": "{任意のアプリのクライアントID}",
"email": "example@example.com",
"password": "xxxxxxxxxx",
"connection": "Username-Password-Authentication",
"username": "johndoe",
"given_name": "John",
"family_name": "Doe",
"name": "John Doe",
"nickname": "johnny",
"picture": "{アイコン画像のURL}",
"user_metadata": { "plan": "silver", "team_id": "a111" }
}
connection
にはユーザーを登録するAuth0のデータベースの名前を指定します。
テナント作成時のデフォルトのままならUsername-Password-Authentication
で良いと思います。
Universal Loginから新規登録を行う場合と比べてusername
など
メールアドレスとパスワード以外のユーザーの属性情報も一緒に登録することができます。
参考:https://auth0.com/docs/api/authentication#signup
Management API
Management APIの場合は/api/v2/users
というAPIが用意されています。
以下のようにPOSTリクエストを送信するとユーザーが作成されます。
(create:users
のスコープを持ったManagement API用のアクセストークンが必要になります。)
POST https://{テナントのドメイン}/api/v2/users HTTP/1.1
Content-Type: application/json
Authorization: Bearer {アクセストークン}
{
"email": "example@example.com",
"user_metadata": {},
"blocked": false,
"email_verified": false,
"app_metadata": {},
"given_name": "John",
"family_name": "Doe",
"name": "John Doe",
"nickname": "Johnny",
"picture": "{アイコン画像のURL}",
"user_id": "abc",
"connection": "Username-Password-Authentication",
"password": "xxxxxxxxxx",
"verify_email": true
}
connection
の設定内容はAuthentication APIと同様です。
Authnetication APIと比べると設定できるパラメーターが多いです。
属性情報はもちろんですが、特にverify_email
パラメーターが特徴的です。
verify_email
パラメーターをtrue
にするとAuthnetication APIやUniversal Loginからユーザー登録をするときと同じように登録メールアドレスに確認のメールが送信されます。
逆にverify_email
パラメーターをfalse
にすると確認メールが送信されなくなります。
登録するユーザーが登録メールアドレスを所持していることを別で確認できる場合や
Auth0の確認メールに頼らずに自力でメールアドレスの確認をする場合に
余分な確認メールが送信されることを抑制する目的で使用することができます。
参考:https://auth0.com/docs/api/management/v2#!/Users/post_users
おわりに
Auth0のAPIを使ったユーザー登録の方法を2種類紹介しました。
特にManagement APIのほうは柔軟なパラメーター設定ができるので思い通りの新規登録フローを実現するのに役に立つと思います。
ただし、確認メールの送信有無の設定については慎重に検討することをお勧めします。
メールアドレスの所有確認もせず、確認メールも一切送信しない、としてしまうと、なりすましの危険性があります。
必ずなんらかの方法でメールアドレスの所有確認をするようにしてください。
(もちろんログイン後にユーザーのemail_verified
を見てメールアドレスの確認状態を検証することも忘れずに)