カスタムデータベースのアクションスクリプト用テンプレート
利用可能性は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ステートメントを明示的に実行)の直後に完了し、その他の操作は実行しません。
アクションスクリプトが非同期処理を使用する場合、callback
関数への呼び出しは、非同期処理が完了する時点まで延期され、一番最後に呼び出される必要があります。非同期実行では、非同期操作が完了した後でJavaScript callback
が実行されます。このコールバックは通常、JavaScript関数のメイン(同期)のボディーが完了した後、ある時点で呼び出されます。