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

利用可否はAuth0プランによって異なります

この機能を利用できるかどうかは、Auth0プランまたはカスタム契約の内容によって異なります。詳しくは、料金体系を参照してください。
ユーザーのアイデンティティデータを含む独自のデータベース (Auth0ではレガシーデータストアと呼びます) がある場合は、それをとして使用して、ユーザーを認証できます。 Auth0では、そのレガシーデータストアへの接続をカスタムデータベースとして作成および設定します。レガシーデータベースからAuth0のデータストアに、時間をかけて段階的にデータを移行することも、データを移行せずに使い続けることもできます。カスタムデータベースに対する各種処理を実行するためのスクリプトテンプレートが用意されており、それらをそのまま利用したり、カスタマイズしたりできます。 カスタムデータベーススクリプトには、次の2種類があります。
  • 自動移行: ユーザーがAuth0にログインするたびに、そのユーザーがまだAuth0に存在しない場合、スクリプトはレガシーデータベースを確認して、そのユーザーが存在するかどうかを調べます。ユーザーが見つかり、Import users to Auth0 フラグが有効になっている場合、ユーザーデータはAuth0のデータストアに移行されます。この機能は、trickle migration または lazy migration と呼ばれることもあります。
  • レガシーデータベース: ユーザーがログインを試みるとき、作成されるとき、パスワードを変更するとき、メールアドレスを確認するとき、または削除されるときに、Auth0は常に基盤となるデータベースを照会します。ユーザーが見つかり、Import users to Auth0 フラグが有効になっていない場合、ユーザーデータはレガシーデータベースに保持され、Auth0には移行されません
Auth0では、次のカスタムデータベースアクションスクリプトを提供しています。

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

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

スクリプトの実行

Custom Database Connections で説明しているように、カスタムデータベース接続では、レガシーアイデンティティストアとの連携時に使用するカスタムコードであるアクションスクリプトを設定できます。各アクションスクリプトは本質的には名前付きの JavaScript 関数で、スクリプトに応じて異なる関数名が使用され、複数のパラメーターが渡されます。

制限

アクションスクリプトの実行では、JavaScript の非同期特性がサポートされており、Promise オブジェクトなどを使用できます。非同期処理では、処理の完了を待っている間、実質的に実行が一時停止された状態になります。Auth0 のサーバーレス Webtask コンテナの実行時間は通常 20 秒に制限されており、これを超えるとコンテナが再利用される場合があります。この制限によってコンテナが再利用されると、処理は途中で終了し、最終的にエラーが返されます (さらに、global オブジェクトがリセットされる可能性もあります) 。

完了と callback 関数

各 アクションスクリプトに渡される callback 関数は、処理の完了を示すシグナルとして機能します。アクションスクリプトは、callback 関数を呼び出した直後に終了し (暗黙的に終了する場合も、JavaScript の return 文を明示的に実行する場合も含む) 、それ以降は他の処理を行わないようにしてください。
Auth0 が提供する callback 関数は、必ず 1 回だけ呼び出す必要があります。アクションスクリプト内でこの関数を複数回呼び出すと、予測不能な結果やエラーが発生します。
callbackcallback() のように引数なしで実行した場合は、callback(null) を実行したものとして扱われます。
アクションスクリプトで非同期処理を使用する場合、callback 関数の呼び出しは非同期処理が完了するまで延期し、かつ最後に呼び出される処理でなければなりません。非同期実行では、非同期処理の完了後に JavaScript の callback が実行されます。このコールバックは通常、JavaScript 関数のメインの (同期的な) 本体の実行が完了した後のどこかの時点で呼び出されます。
callback 関数を実行しないと、処理が停止したままとなり、最終的にエラーが返されます。アクションスクリプトでは、callback 関数を必ず 1 回だけ呼び出す必要があります。処理の停止を防ぐには callback 関数を少なくとも 1 回呼び出す必要がありますが、複数回呼び出すと予測不能な結果やエラーが発生します。