- MongoDB
- MySQL
- PostgreSQL
- Microsoft SQL Server
- ASP.NET Identity
- Basic Auth を使用してアクセスする Web サービス
手順
前提条件
- 外部ユーザーストアは、Auth0’s のサーバーから到達可能である必要があります。ファイアウォールの内側にある場合は、Auth0’s のアウトバウンド IP アドレスからの受信トラフィックを許可してください。
-
外部ユーザーストアには、
id、nickname、email、passwordなどの正規化されたユーザープロファイル属性を保存するための適切なフィールドが必要です。 -
データベースアクションスクリプトから返される
id(またはuser_id) の値は、Auth0 がこの値を使用してユーザーを識別するため、すべてのカスタムデータベース接続で一意である必要があります。 複数のカスタムデータベース接続を使用する際にユーザー ID の重複を避けるため、idの値の先頭に接続名 (空白を除く) を付けることをおすすめします。
カスタムデータベース接続を作成する
Auth0 Dashboard > Authentication > Databaseで、+ Create DB Connection を選択します。New Database Connection ページで、以下の設定を入力します。
-
次の条件を満たす名前を入力します。
- 英数字とダッシュのみを使用する。
- 英数字で始まり、英数字で終わる。
- 35文字以内である。
- ユーザー識別子として、1つ以上の属性を選択します。
- パスワードやパスキーなど、1つ以上の認証方法を選択します。
- Use my own database トグルを有効にします。
データベースアクションスクリプトを作成する
カスタムデータベース接続を作成したら、ログイン、サインアップ、メール検証、パスワードリセット、ユーザー削除などの機能で Auth0 が外部ユーザーストアとどのように連携するかを定義するため、データベースアクションスクリプトを作成する必要があります。少なくとも、Login スクリプトを実装する必要があります。
- データベース接続のページで、Custom Database タブを選択します。
- Database Action Scripts セクションで、Login を選択します。
-
提供されている関数シグネチャを使用して独自のデータベースアクションスクリプトを作成するか、Load Template ドロップダウンメニューからテンプレートを選択して開始します。
MySQL Login アクションスクリプトの例
たとえば、MySQL Login アクションスクリプトテンプレートは次のようになります。この例では、データベースに適切な列を含むLogin database action script template for MySQLusersテーブルがあることを前提としています。スクリプトはデータベースに接続し、クエリを使用してemail == user.emailに一致する最初のユーザーを取得し、bcrypt.compareで入力されたパスワードを検証します。成功した場合は、ユーザープロファイル情報 (id、nickname、emailを含む) を含むオブジェクトを返します。
return ステートメントで明示的に) Auth0 提供の callback 関数を必ず1回だけ呼び出す必要があります。設定パラメータを追加(任意)
Database Action Scripts の下にある Configuration Parameters セクションでは、すべてのデータベースアクションスクリプトでグローバル
configuration オブジェクトから使用できる値を保存できます。値は暗号化されるため、設定パラメータには、外部アイデンティティストアへのアクセスに必要な資格情報や API キーなどの機密情報を保存したり、tenant 固有の値を持つ変数を定義したりすることもできます。前述の MySQL の例を拡張するには、Key MYSQL_PASSWORD を追加し、Value に MySQL のパスワードを設定します。この設定パラメータを使用して接続できます。MySQL connection configuration parameter example
configuration オブジェクトは読み取り専用として扱い、アクションスクリプトでの値のハードコーディングを避けるために使用してください。次のステップ
自動移行を有効にする
組織コンテキストを有効にする
context オブジェクトを有効にすることで、id、name、metadata などの組織の詳細をデータベースアクションスクリプトで利用できるようになります。
これにより、組織データを含む追加の context 引数がカスタムデータベーススクリプトに渡されます。たとえば、ユーザーが組織のログインプロンプトで認証されると、この引数がログインデータベースアクションスクリプトに渡されます。
context オブジェクトは、一度有効にすると無効にできません。context オブジェクトを有効にします。
- Auth0 Dashboard > Authentication > Database に移動し、データベース接続を選択します。
- Custom Database タブを選択します。
- Context object in database scripts の横にある Enable を選択します。
- 開いた 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 が適用されます。
