メインコンテンツへスキップ

利用可能性はAuth0プランによって異なる

この機能が利用できるかどうかは、ご利用のAuth0プラン(または契約)によります。詳細については、「価格設定」をお読みください。
ユーザーIDデータを含んた独自のデータベース(Auth0ではレガシーデータストアと呼ばれる)がある場合は、それをIDプロバイダーとして使用し、ユーザーを認証することができます。Auth0で、レガシーデータストアへの接続をカスタムデータベースとして作成し、構成します。データは、レガシーデータベースからAuth0のデータストアに時間をかけて徐々に移行するか、移行せずに使用し続けることができます。カスタマイズ可能なスクリプトテンプレートを使用すると、カスタムデータベースで関数を実行することができます。 カスタムデータベーススクリプトには、以下の2種類があります。
  • 自動移行 :Auth0へのログイン時に、ユーザーがまだAuth0に存在していない場合、スクリプトはレガシーデータベースでユーザーの有無を確認します。ユーザーが見つかり、 Auth0にユーザーをインポート フラグがある場合には、ユーザーデータによってユーザーがAuth0データストアに移行されます。この機能は、 トリクルダウン移行レイジー移行 と呼ばれることがあります。
  • レガシーデータベース :ユーザーのログイン試行、作成、パスワード変更、メール検証や削除では、Auth0は必ず基盤となるデータベースにクエリを行います。ユーザーが見つかって、 Auth0にユーザーをインポート フラグが ない 場合には、ユーザーデータはレガシーデータベースに留まり、Auth0には移行 されません
Auth0には、以下のカスタムデータベースのアクションスクリプトがあります。

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

ファイアウォールの内側にいる場合、この機能を正しく動作させるには、適切なAuth0のIPアドレスをAllow List(許可リスト)に追加する必要があるかもしれません。

スクリプトの実行

カスタムデータベース接続」で説明されているように、カスタムデータベース接続タイプでは、アクションスクリプトを構成することができます。アクションスクリプトとは、レガシーIDストアとのやり取りに使用されるカスタムコードのことです。原則的に、各アクションスクリプトは名前が付けられたJavaScript関数で、多数のパラメータが渡されます。関数の名前と渡されるパラメーターは、スクリプトによって異なります。

制限

アクションスクリプトの実行は、JavaScriptの非同期な性質に対応し、Promiseオブジェクトなどのコンストラクトを使用することができます。非同期処理を行うと、操作の完了が保留され、事実上一時停止となります。Auth0のサーバーレスWebtaskコンテナーには通常、20秒の実行制限が設けられており、それを超えると、コンテナーはリサイクルされます。この制限によってコンテナーがリサイクルされると、操作は途中で終了され、最終的にはエラー状態が返されます(globalオブジェクトもリセットされる可能性があります)。

完了とcallback関数

各アクションスクリプトに用意されたcallback関数は、操作が完了したことを示す合図として機能します。アクションスクリプトは、callback関数への呼び出し(暗示的あるいはJavaScript returnステートメントを明示的に実行)の直後に完了し、その他の操作は実行しません。
Auth0が提供するcallback関数は 1回 だけ呼び出す必要があります。1つのアクションスクリプト内で関数を複数回呼び出すと、予期しない結果が得られたり、エラーが発生したりします。
callbackが、callback()のようにパラメーターを指定せずに実行された場合は、callback(null)の実行時と同じように関数が呼び出されます。
アクションスクリプトが非同期処理を使用する場合、callback関数への呼び出しは、非同期処理が完了する時点まで延期され、一番最後に呼び出される必要があります。非同期実行では、非同期操作が完了した後でJavaScript callbackが実行されます。このコールバックは通常、JavaScript関数のメイン(同期)のボディーが完了した後、ある時点で呼び出されます。
callback関数の実行に失敗すると、その実行は停止し、最終的にはエラー状態が返されます。アクションスクリプトは、callback関数を1回だけ呼び出す必要があります:callback関数は、実行の停止を防ぐために少なくとも1回呼び出す必要がありますが、複数回呼び出すことはできません。複数回呼び出そうとすると、予期しない結果が得られたり、エラーが発生したりします。

もっと詳しく

I