メインコンテンツへスキップ
独自のユーザーデータベースがある場合は、それを Auth0 の として使用して、ユーザーを認証できます。以下の手順に従って、カスタムデータベース接続を作成し、データベース アクションスクリプトを作成して、設定パラメーターを追加してください。
データベースに、idnicknameemailpassword などの ユーザープロファイル属性 を保存するための適切なフィールドがあることを確認してください。Auth0 のユーザープロファイルスキーマについては、Normalized User Profiles を参照してください。ユーザープロファイルの更新の詳細については、Update User Profiles Using Your Database を参照してください。
Auth0 では、一般的によく使われるほとんどのデータベース向けに、接続とスクリプトを作成できます。以下が含まれます。
  • ASP.NET Identity
  • MongoDB
  • MySQL
  • PostgreSQL
  • SQLServer
  • Windows Azure SQL Database
  • Basic Auth 経由でアクセスする Web サービス
適切に設定されたカスタムスクリプトを使用すれば、あらゆる種類のデータベースや Web サービスに接続できます。入力値のサニタイズはお客様側で行う必要がある点に注意してください。Auth0 は、カスタムデータベースから渡される username/password の組み合わせをサニタイズまたは検証しません。Custom Database スクリプトには、Auth0 の Rate Limit Policy が適用されます。

ネットワークファイアウォール

ファイアウォールの内側にある環境では、この機能を正しく動作させるために、適切な Auth0 IP アドレスを許可リストに追加する必要がある場合があります。

Auth0 Dashboard で接続を作成する

  1. Auth0 Dashboard > Authentication > Database に移動し、Create DB Connection を選択します。
  2. 接続の設定を行い、Create を選択します。
Auth0 で接続が作成されると、次のビューが表示されます (Settings ビューに加えて) 。
  • Attributes
    • Authentication Methods
    • Custom Database
    • Applications
  1. Custom Database ビューを選択し、Use my own database スイッチを有効にします。
    Enable Custom Database Use My Own Database Option

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

Use my own database スイッチをオンにすると、Database Action Scripts 領域が有効になり、データベース使用時の認証の動作を設定するスクリプトを作成できるようになります。データベースアクションスクリプトは自分で記述することも、Templates ドロップダウンからテンプレートを選択して必要に応じて修正することもできます。 login スクリプトの設定は必須です。ユーザー関連機能の追加スクリプトは任意です。 利用可能なデータベースアクションスクリプトは次のとおりです。 スクリプトの詳細については、Custom Database Action Script Templates および Custom Database Action Script Execution Best Practices を参照してください。

Login スクリプトを作成する

複数のデータベース間でのユーザー ID の衝突を回避する

返されるユーザープロファイルの id (または user_id) プロパティは、Auth0 がユーザーを識別するために使用します。複数のカスタムデータベース接続を使用している場合は、ユーザー ID の衝突を避けるため、id の値がすべてのカスタムデータベース接続で一意である必要があります。推奨される方法は、id の値の先頭に接続名 (空白は削除) を付けることです。ユーザー ID の詳細については、Identify Users を参照してください。
以下の手順では、MySQL データベース用の Login スクリプトの例を使用します。
  1. Use my own database スイッチをオンにすると、Database Action Scripts 領域が有効になります。Login タブが選択されていることを確認してください。
  2. Templates ドロップダウンを使用して、MySQL データベーススクリプトテンプレートを選択します。
    上記のスクリプトは MySQL データベースに接続し、email == user.email に一致する最初のユーザーを取得するクエリを実行します。 次に、bcrypt.compareSync メソッドを使用してパスワードが一致することを検証し、一致した場合は idnicknameemail を含むユーザープロファイル情報を格納したオブジェクトを返します。 このスクリプトは、これらの列を含む users テーブルが存在することを前提としています。Login スクリプトから返された id は、ユーザープロファイルのユーザー ID 属性の構築に使用されます。
  3. Save and Try を選択します。
  4. ポップアップモーダルでメールアドレスとパスワードを入力し、Try をクリックします。利用可能なランタイムの一覧から選択できるドロップダウンが表示され、現在のランタイムが先頭に表示されます。
    Login スクリプトを試すためのモーダル。
スクリプトテンプレートは、Save または Try を選択するまで Auth0 では使用されません。これは、1 つのスクリプトだけを変更し、ほかのスクリプトに変更を加えていない場合でも同様です。すべてのスクリプトを反映するには、少なくとも 1 回 Save を選択する必要があります。

組織向けカスタムデータベースのサポート

組織と併用してカスタムデータベース接続を使用する場合は、スクリプトシグネチャの context パラメーターを使うことで、idnamemetadata などの組織の詳細をカスタムデータベースのアクションスクリプトで利用できるようになります。関連するアクションが組織のコンテキストで発生すると、組織データは context オブジェクトを通じて渡されます。たとえば、ユーザーが組織のログインプロンプトで認証すると、login アクションスクリプトにそのデータが渡されます。詳しくは、Database Connections を参照してください。

コンテキストオブジェクトを有効にする

  1. Auth0 Dashboard > Authentication > Database に移動します。
  2. 使用するデータベース接続を選択します。
  3. Custom Database タブで Context objects in database scripts を見つけ、Enable を選択します。
    この機能は、有効にすると無効化できません。
  4. 確認のプロンプトで Confirm を選択します。

組織コンテキストを使用する

Dashboard でコンテキストオブジェクトを有効にすると、callback パラメーターの直前に挿入される context オブジェクトをカスタムデータベースアクションスクリプトに追加できます。イベントが組織コンテキストで発生すると、対応するデータが以下の形式でカスタムデータベースアクションスクリプトから利用できるようになります。
空のコンテキストは常に delete スクリプトに渡されます。

設定パラメーターを追加する

データベースへの接続に必要な認証情報などのパラメーターは、スクリプトエディターの下にあるSettingsセクションに保存できます。これらのパラメーターはすべてのスクリプトで利用でき、データベースアクションスクリプトでは configuration オブジェクトを使ってその値にアクセスできます (例: configuration.MYSQL_PASSWORD) 。 追加したパラメーターをスクリプト内で使用して接続を構成します。たとえば、MySQL Login スクリプトに次のような内容を追加できます。

詳細