Skip to main content
カスタムデータベース接続を使用する場合、Auth0では外部ユーザーストアからAuth0ユーザーストアへのユーザーの自動移行 (トリクル移行または遅延移行とも呼ばれます) がサポートされています。 Auth0へのインポート対象として設定されたカスタムデータベース接続を介してユーザーが認証されると、次の処理が行われます。
ユーザー移行図
ユーザーがAuth0ユーザーストアに存在しない場合、Auth0は外部ユーザーストアに対して認証を行い、認証に成功すると、認証時に指定されたIDとパスワードを使用してAuth0ユーザーストアにユーザーを作成します。 これにより、既存のユーザーは初回ログイン時にAuth0へ移行されるため、パスワードをリセットする必要はありません。新規ユーザーはAuth0ユーザーストアに直接追加されます。

移行を開始する

1

前提条件

自動移行を設定するには、次のものが必要です。
2

移行を有効にする

Auth0 Dashboard > Authentication > Database で、カスタムデータベース接続を選択します。設定タブで、Import Users to Auth0 をオンにし、Save を選択します。
3

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

データベースアクションスクリプトは、ユーザーのログインやサインアップ時など、Auth0 が外部ユーザーストアとやり取りする際に実行するコードです。次に、Custom Database タブで、Database Action Scripts セクションを見つけます。
Dashboard Authentication Database Connection Custom Database tab Database Action Scripts
自動移行を有効にするには、次の 2 つのスクリプトを実装する必要があります。
  • login() スクリプト:Auth0 データベースに存在しないユーザーがログインしようとしたときに実行されます。
  • getUser() スクリプト:サインアップやパスワード変更などの際に実行されます。getUser() スクリプトから返されたデータは、新しい Auth0 ユーザープロファイルに移行されます。

移行中の外部ユーザーストアデータの管理

自動移行時に外部ユーザーストアのユーザーデータを扱う際は、以下のベストプラクティスに従うことをお勧めします。
  • 明示的にアーカイブまたは削除しない限り、ユーザーは外部ユーザーストアに残ります。ユーザーがAuth0に移行された後、Auth0から削除されても外部ユーザーストアに残っている場合、そのユーザーがログインを試みて再度移行される可能性があります。 意図的に削除したユーザーが意図せず再作成されるのを防ぐため、LoginまたはGet Usersのカスタムデータベースアクションスクリプトを実行する前に、外部ユーザーストア内のユーザーIDを移行済みとしてマークすることをお勧めします。
  • 通常、Auth0ユーザーストア内のユーザーは、Loginアクションスクリプトの完了後に作成されます。Loginスクリプト内でインライン操作として外部ユーザーストアからユーザーを削除するのではなく、移行中にエラーが発生した場合のユーザーの誤削除を避けるため、独立したプロセスとしてユーザーを削除することをお勧めします。

移行を完了する

1

移行の完了を確認する

外部ユーザーストアのすべてのユーザーがAuth0ユーザーストアに存在することを確認し、移行が完了していることを検証します。Auth0ユーザーストア内のすべてのユーザーは、次の2つの方法で確認できます。
2

外部ユーザーストアを切断する

すべてのユーザーが移行されたことを確認したら、データベースアクションスクリプトを何も実行しない関数に更新することで、外部ユーザーストアを切断できます。これにより、Auth0がユーザーを認証するために外部ユーザーストアへ接続しなくなります。
Import Users to Auth0オプションはオンのままにしてください。この設定により、Auth0はカスタムデータベース接続でAuth0ユーザーストアを使用します (データベースアクションスクリプトを介して外部ユーザーストアのみを使用するのではなく) 。
Auth0 Dashboard > Authentication > Databaseでデータベース接続を選択します。Custom Databaseタブで、Database Action Scriptsセクションを探します。Loginスクリプトを更新します。
Get Userスクリプトを更新します。

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

自動移行で問題が発生した場合は、まず カスタムデータベース接続とアクションスクリプトのベストプラクティス を参照してください。

重複したユーザーまたはユーザーはすでに存在します

ユーザー移行プロセスでは、Auth0 はまず内部ユーザーストアに不完全なユーザープロファイルを作成し、その後、データベース接続に完全なユーザープロファイルを作成します。何らかの問題が発生してこの完全なユーザープロファイルを作成できない場合、“The user already exists” エラーが発生することがあります。 DUPLICATED_USER エラーは、ユーザーが Auth0 の内部ユーザーストアには存在するものの、テナントには存在しないことを示します。次の場合にこのエラーが発生することがあります。
  • 複数の移行方法を使用しようとする (例:自動移行の後に一括ユーザーインポートを行う) 。
  • データベース接続からユーザーを削除した後、そのユーザーを再作成しようとする。
  • ユーザーが外部ユーザーストアにすでに存在している状態で、データベース接続に新しいユーザーを作成しようとする。
DUPLICATED_USER または “The user already exists” エラーを解決するには、次の手順を実行します。
  1. Actions リアルタイムログconsole.log() の出力を確認します。
  2. Management API の Delete a User エンドポイントを使用してユーザーを削除します。
  3. Management API の Delete a Connection User エンドポイントを使用してユーザーを削除します。
  4. ユーザーに、移行を再試行するため、ログインするかパスワードを変更するよう案内します。

メタデータの欠落

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