メインコンテンツへスキップ
カスタムデータベース Action スクリプトを使用して、外部のユーザーストアから Auth0 へユーザーを自動的に移行できるように、データベース接続を設定します。
複数の移行方法 (たとえば、自動移行の後にユーザーを一括インポートする方法) を使用しようとすると、DUPLICATED_USER エラーが発生する場合があります。このエラーは、ユーザーが Auth0 の内部ユーザーストアには存在しているものの、テナントには存在しないことを示します。このエラーを解消するには、Auth0 Management API の Delete a Connection User エンドポイントを使用してユーザーを削除してから、インポートを再実行してください。

データベース接続をカスタムに設定する

データベース接続を作成し、カスタムとして設定します。
  1. Auth0 Dashboard > Authentication > Database に移動し、対象のデータベースを選択して表示します。
  2. Custom Database ビューを選択し、Use my own database をオンにします。
    Auth0 Dashboard Authentication データベース接続 Custom Database Settings Use Own Database Enabled
  3. Settings ビューを選択し、Import Users to Auth0 をオンにして、Save を選択します。

Database Action Scripts を設定する

Custom Database ビューを選択し、Database Action Scripts を探します。
ダッシュボード Authentication Database 接続 Custom Database タブ Database Action Scripts

ログイン

Login スクリプトは、Auth0 に存在しないユーザーがログインを試みるたびに実行されます。このスクリプトは、ユーザーにパスワードの再入力を求めることなく、外部ユーザーストアにそのユーザーが存在するかどうかを確認します。

Get User

Get User スクリプトは、次のいずれかの状況で実行されます。 まだ移行されていないユーザーがパスワード変更を確定して正常にログインすると、新しいパスワードでそのユーザープロファイルが Auth0 に作成されます。このユーザープロファイルには、Get User スクリプトで返されたすべてのデータが含まれます。それ以降、このユーザーのログインはすべて Auth0 で直接実行されます。

ユーザー移行が完了していることを確認する

または Auth0 Management API を使用して、すべてのユーザーが Auth0 のユーザーストアに移行されていることを確認します。
  1. Auth0 Dashboard > User Management > Users に移動し、ユーザー一覧を確認します。
  2. Management API の List or Search Users エンドポイントを使用します。

外部ユーザーストアの接続解除

Database Action Scripts を no-op 関数として再設定します。これにより、Auth0 がユーザーの認証のために外部ユーザーストアへアクセスしなくなります。
Import Users to Auth0 オプションは必ず有効のままにしてください。このオプションを無効にすると、ローカルにインポートされたユーザーではなく、Auth0 は認証やその他のユーザー操作にスクリプトだけを使用するようになります。
  1. Auth0 Dashboard > Authentication > Database に移動し、データベース接続を選択します。
  2. Custom Database ビューに切り替え、Database Action Scripts を探します。
  3. Login スクリプトを更新します。
    function login (email, password, callback) {
      return callback(null, null);
    }
    
  4. Get User スクリプトを更新します。
    function getByEmail (email, callback) {
      return callback(null, null);
    }
    

ユーザー移行に関する問題のトラブルシューティング

自動移行で問題が発生した場合は、まず Custom Database Connection and Action Script Best Practices を確認してください。

ユーザーはすでに存在します

この問題が発生する一般的なケースは、次のとおりです。
  • データベース接続からユーザーを削除した後で、そのユーザーを再作成しようとする。
  • 外部ユーザーストアにすでに存在するユーザーを、データベース接続で新規作成しようとする。
  • ユーザーの移行プロセスが中断された。
ユーザー移行プロセスでは、Auth0 はまず内部ユーザーストアに部分的なユーザープロファイルを作成し、その後 データベース接続に完全なユーザープロファイルを作成します。何らかの問題が発生して完全なユーザープロファイルを作成できない場合、The user already exists エラーが発生することがあります。 通常、この問題は データベース接続からユーザーを削除し、内部ユーザーストアからもユーザーを削除したうえで、移行プロセスを再試行することで解決できます。
  1. Actions Real-time Logsconsole.log() の出力を確認します。
  2. Management API の Delete a User エンドポイントを使用してユーザーを削除します。
  3. Management API の Delete a Connection User エンドポイントを使用してユーザーを削除します。
  4. ユーザーにログインまたはパスワードの変更を行ってもらい、移行を再試行します。

メタデータの欠落

移行プロセスを開始するログインフローまたはパスワード変更フローの途中でユーザーの処理が中断されると、Auth0 は他のプロファイルデータとあわせてそのメタデータ (user_metadata または app_metadata) を転送できないことがあります。 この状況は、ユーザーのプロファイルにメタデータがないことを確認し、外部ユーザーストアからそれを取得して Auth0 に保存する Action を作成することで軽減できます。

関連情報