18
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Auth0】APIを使ってユーザーを登録する

Posted at

はじめに

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を見てメールアドレスの確認状態を検証することも忘れずに)

18
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?