利用可能性はAuth0プランによって異なる
この機能が利用できるかどうかは、ご利用のAuth0プラン(または契約)によります。詳細については、「価格設定」をお読みください。
データベースに、ユーザープロファイル属性を保管する
id
、nickname
、email
、password
などのフィールドがあることを確認してください。Auth0のユーザープロファイルスキーマについては、「正規化ユーザープロファイル」をお読みください。ユーザープロファイルの更新については、「データベースでユーザープロファイルを更新する」をお読みください。- ASP.NET Membership Provider
- MongoDB
- MySQL
- PostgreSQL
- SQLServer
- Windows Azure SQL Database
- 基本認証でアクセスされるWebサービス
ネットワークのファイアウォール
ファイアウォールの内側にいる場合、この機能を正しく動作させるには、適切なAuth0のIPアドレスをAllow List(許可リスト)に追加する必要があるかもしれません。
Auth0 Dashboardで接続を作成する
- [Auth0 Dashboard]>[Authentication(認証)]>[Database(データベース)]に移動して、[Create DB Connection(DB接続の作成)] を選択します。
- 接続の設定を構成し、[Create(作成)] をクリックします。
パラメーター | 定義 |
---|---|
Name(名前) | 接続の名前です。名前の先頭と末尾には英数字を使用し、英数字とダッシュのみを含め、35文字以内で指定する必要があります。 |
Requires Username(ユーザー名を要求する) | 登録でユーザー名とメールアドレスの入力をユーザーに強制します。 |
Username Length(ユーザー名の長さ) | ユーザー名の最小と最大の長さを設定します。 |
Disable Sign Ups(サインアップを無効にする) | アプリケーションへのサインアップを抑止します。API資格情報またはAuth0 Dashboardを使ってこれまでと変わりなく、ユーザーを作成することができます。 |
- Password Policy(パスワードポリシー)
- Custom Database(カスタムデータベース)
- アプリケーション
- [Try Connection(接続を試す)]
-
[Custom Database(カスタムデータベース)] ビューを選択し、[Use my own database(独自のデータベースを使用する)] スイッチを有効にします。
データベースアクションスクリプトを作成する
[Use my own database(独自のデータベースを使用する)] スイッチを切り替えると、[Database Action Scripts(データベースアクションスクリプト)] 領域が有効になり、ここでスクリプトを作成し、データベース使用時の認証の仕組みを設定します。データベースアクションスクリプトを記述するか、[Templates(テンプレート)] ドロップダウンからテンプレートを選択し、必要に応じて変更することができます。login
スクリプトは構成する必要があります 。ユーザー機能性のその他のスクリプトはしてもしなくても構いません。
使用できるデータベースアクションスクリプトは以下のとおりです。
名前 | 説明 | パラメーター |
---|---|---|
Login(ログイン) 必須 | ユーザーがログインを試みるたびに実行します。 | email 、password |
Create(作成) | ユーザーがサインアップするときに実行します。 | user |
Verify(検証) | ユーザーが検証リンクに従った後に実行します。 | email |
Change Password(パスワード変更) | パスワードのリセット要求後にユーザーが確認リンクをクリックすると実行します。 | email 、newPassword |
Get User(ユーザー取得) | ユーザーを認証することなく、データベースからユーザープロファイルを取得します。 | email |
Delete(削除) | APIまたはAuth0 Dashboardを使用してユーザーが削除されると実行します。 | id |
ログインスクリプトを作成する
複数データベースでのユーザーIDの衝突を回避する
返されたユーザープロファイルにある
id
(またはuser_id
)プロパティは、Auth0によってユーザーの識別に使用されます。複数のカスタムデータベース接続を使っている場合には、ユーザーIDの衝突を避けるために、id
の値がすべてのカスタムデータベース接続で一意でなくてはなりません。id
の値には、接続名をプレフィックス(スペースは削除)として追加することをお勧めします。ユーザーIDの詳細については、「ユーザーを識別する」をお読みください。- [Use my own database(独自のデータベースを使用する)] スイッチを切り替えた後、** [Database Action Scripts(データベースアクションスクリプト)]** 領域が有効になります。[Login(ログイン)] タブが開いていることを確認します。
-
[Templates(テンプレート)] ドロップダウンを使用して、MySQLデータベーススクリプト用テンプレートを選択します。
上記のスクリプトはMySQLデータベースに接続し、クエリーを実行して
email == user.email
を含む最初のユーザーを取得します。bcrypt.compareSync
メソッドでは次に、パスワードが一致するかどうかを検証します。一致する場合は、id
、nickname
、およびemail
などのユーザープロファイル情報を含むオブジェクトを返します。このスクリプトは、これらの列を含むusers
テーブルを持っていると仮定します。ログインスクリプトによって返されたid
を使って、ユーザープロファイルのユーザーID属性を構築します。 - [Save and Try(保存して試す)] をクリックします。
-
[Try(試す)] をクリックしてスクリプトをテストします。(この手順によりスクリプトの保存も行われます。)
Organization用カスタムデータベースのサポート
カスタムデータベース接続をOrganizationと組み合わせて使用する場合は、スクリプト署名のcontext
パラメーターを使って、id
、name
、metadata
のようなOrganizationの詳細をカスタムデータベースのアクションスクリプトに適用することができます。関連するアクションが組織コンテキストで実行されると、Organizationデータがコンテキストオブジェクトに渡されます。たとえば、ユーザーが組織のログインスクリプトを認証すると、ログインアクションのスクリプトが渡されます。詳細については、「データベース接続」をお読みください。
コンテキストオブジェクトを有効にする
- [Auth0 Dashboard]>[Authentication(認証)]>[Database(データベース)]の順に移動します。
- データベース接続を選択します。
-
[Custom Database(カスタムデータベース)] タブで、[Context objects in database scripts(データベーススクリプト内のコンテキストオブジェクト)] を見つけて、** [Enable(有効にする)]** を選択します。
この機能は一度有効にすると、無効にできません。
Organizationコンテキストを使用する
コンテキストオブジェクトがDashboardで有効になると、「context」オブジェクトをカスタムデータベースのアクションスクリプトに追加し、コールバックパラメーターの直前に挿入することができます。イベントがOrganizationコンテキストでトリガーされると、対応するデータを以下の形式でカスタムデータベースのアクションスクリプトで使用できるようになります。- ログイン
- 作成
- 検証
- パスワードの変更
- ユーザーの取得
- 削除
空のコンテキストは必ず
delete
スクリプトに渡されます。構成パラメーターを追加する
データベースへの接続に必要な資格情報といったパラメーターは、スクリプトエディターの下にある [Settings(設定)] セクションに保存することができます。これらのパラメーターはすべてのスクリプトに使用することができ、データベースアクションスクリプト内のconfiguration
オブジェクト(configuration.MYSQL_PASSWORD
など)を使ってパラメーター値にアクセスすることができます。
スクリプトに追加したパラメーターを使って接続を構成します。たとえば、以下をMySQL Loginスクリプトに追加することができます。