Skip to main content
独自の外部ユーザーストアがある場合は、それを Auth0 の として使用して、ユーザーを認証できます。 そのためには、まずカスタムデータベース接続を作成して Auth0 を外部ユーザーストアに接続し、次に Auth0 とユーザーストアの連携方法を定義するデータベースアクションスクリプトを作成します。以下の一般的なデータベース向けに、データベースアクションスクリプトのテンプレートを提供しています。
  • MongoDB
  • MySQL
  • PostgreSQL
  • Microsoft SQL Server
  • ASP.NET Identity
  • Basic Auth を使用してアクセスする Web サービス
これらのテンプレートは変更できるほか、独自のテンプレートを一から作成して、あらゆる種類の外部ユーザーストアに接続することもできます。

手順

1

前提条件

  • 外部ユーザーストアは、Auth0’s のサーバーから到達可能である必要があります。ファイアウォールの内側にある場合は、Auth0’s のアウトバウンド IP アドレスからの受信トラフィックを許可してください。
  • 外部ユーザーストアには、idnicknameemailpassword などの正規化されたユーザープロファイル属性を保存するための適切なフィールドが必要です。
  • データベースアクションスクリプトから返される id (または user_id) の値は、Auth0 がこの値を使用してユーザーを識別するため、すべてのカスタムデータベース接続で一意である必要があります。 複数のカスタムデータベース接続を使用する際にユーザー ID の重複を避けるため、id の値の先頭に接続名 (空白を除く) を付けることをおすすめします。
2

カスタムデータベース接続を作成する

Auth0 Dashboard > Authentication > Databaseで、+ Create DB Connection を選択します。New Database Connection ページで、以下の設定を入力します。
  • 次の条件を満たす名前を入力します。
    • 英数字とダッシュのみを使用する。
    • 英数字で始まり、英数字で終わる。
    • 35文字以内である。
  • ユーザー識別子として、1つ以上の属性を選択します。
  • パスワードパスキーなど、1つ以上の認証方法を選択します。
  • Use my own database トグルを有効にします。
完了したら、Create を選択します。Auth0 によりデータベース接続が作成され、その設定ページにリダイレクトされます。
3

データベースアクションスクリプトを作成する

カスタムデータベース接続を作成したら、ログイン、サインアップ、メール検証、パスワードリセット、ユーザー削除などの機能で Auth0 が外部ユーザーストアとどのように連携するかを定義するため、データベースアクションスクリプトを作成する必要があります。少なくとも、Login スクリプトを実装する必要があります。
  1. データベース接続のページで、Custom Database タブを選択します。
  2. Database Action Scripts セクションで、Login を選択します。
  3. 提供されている関数シグネチャを使用して独自のデータベースアクションスクリプトを作成するか、Load Template ドロップダウンメニューからテンプレートを選択して開始します。
    たとえば、MySQL Login アクションスクリプトテンプレートは次のようになります。
    Login database action script template for MySQL
    この例では、データベースに適切な列を含む users テーブルがあることを前提としています。スクリプトはデータベースに接続し、クエリを使用して email == user.email に一致する最初のユーザーを取得し、bcrypt.compare で入力されたパスワードを検証します。成功した場合は、ユーザープロファイル情報 (idnicknameemail を含む) を含むオブジェクトを返します。
すべてのデータベースアクションスクリプトでは、完了直前に (暗黙的に、または return ステートメントで明示的に) Auth0 提供の callback 関数を必ず1回だけ呼び出す必要があります。
4

設定パラメータを追加(任意)

Database Action Scripts の下にある Configuration Parameters セクションでは、すべてのデータベースアクションスクリプトでグローバル configuration オブジェクトから使用できる値を保存できます。値は暗号化されるため、設定パラメータには、外部アイデンティティストアへのアクセスに必要な資格情報や API キーなどの機密情報を保存したり、tenant 固有の値を持つ変数を定義したりすることもできます。前述の MySQL の例を拡張するには、Key MYSQL_PASSWORD を追加し、Value に MySQL のパスワードを設定します。この設定パラメータを使用して接続できます。
MySQL connection configuration parameter example
configuration オブジェクトは読み取り専用として扱い、アクションスクリプトでの値のハードコーディングを避けるために使用してください。
5

データベースアクションスクリプトをテストして保存する

  1. データベースのアクションスクリプトをテストするには、コードブロックの上にある保存して試すを選択します。
  2. 表示されるログインスクリプトを試すウィンドウで、テストに使用するユーザー資格情報を入力します。
    ログインスクリプトを試すウィンドウ。
  3. 試すを選択してランタイムセレクターを開きます。スクリプトの実行に使用するランタイムを選択します。
完了したら、ログインスクリプトを試すウィンドウを閉じ、保存を選択してスクリプトを保存します。

次のステップ

自動移行を有効にする

外部ユーザーストアを引き続き IdP として使用できます。代わりに Auth0 のユーザーストアに移行する場合は、ユーザーを Auth0 に段階的に移行できます (trickle 移行または lazy 移行と呼ばれることもあります) 。

組織コンテキストを有効にする

Organizations でカスタムデータベース接続を使用している場合は、context オブジェクトを有効にすることで、idnamemetadata などの組織の詳細をデータベースアクションスクリプトで利用できるようになります。 これにより、組織データを含む追加の context 引数がカスタムデータベーススクリプトに渡されます。たとえば、ユーザーが組織のログインプロンプトで認証されると、この引数がログインデータベースアクションスクリプトに渡されます。
context オブジェクトは、一度有効にすると無効にできません。
まず、context オブジェクトを有効にします。
  1. Auth0 Dashboard > Authentication > Database に移動し、データベース接続を選択します。
  2. Custom Database タブを選択します。
  3. Context object in database scripts の横にある Enable を選択します。
  4. 開いた Are you absolutely sure? ウィンドウで、Confirm を選択します。
次に、データベースアクションスクリプトに context オブジェクトを追加します。このパラメータは、callback パラメータの直前に配置します。たとえば、Login スクリプトの関数シグネチャは次のようになります。
Original Login script function signature
Login script function signature with the context object
context オブジェクトには、次の形式で組織データが含まれます。
組織コンテキスト付きでイベントがトリガーされると、対応するデータは、常に空の context オブジェクトが渡される Delete スクリプト を除く、すべてのデータベースアクションスクリプトで利用できます。

制限事項と考慮事項

  • Auth0 は、カスタムデータベースから渡されるユーザー名とパスワードの組み合わせをサニタイズまたは検証しません。
  • データベースアクションスクリプトには、Auth0 の Rate Limit Policy が適用されます。