複数の移行方法(たとえば、自動移行をしてからユーザーの一括インポート)を使用しようとすると、
DUPLICATED_USER
エラーが発生することがあります。このエラーは、ユーザーがAuth0の内部ユーザーストアに存在するものの、テナントには存在しないことを示します。このエラーを修正するには、Auth0 Management APIの接続ユーザー削除エンドポイントでユーザーを削除してから、インポートを再試行します。データベース接続をカスタムとして構成する
データベース接続を作成し、カスタムに設定します。- [Auth0 Dashboard]>[Authentication(認証)]>[Database(データベース)]に移動し、データベースを選択して表示します。
-
[Custom Database(カスタムデータベース)] ビューを選択し、[Use my own database(独自のデータベースを使用する)] を有効にします。
- [Settings(設定)] ビューを選択し、[Import Users to Auth0(ユーザーをAuth0にインポート)] を有効にしたのち、[Save(保存)] を選択します。
データベースのアクションスクリプトの構成
[Custom Database(カスタムデータベース)] ビューを選択し、[Database Action Scripts(データベースのアクションスクリプト)] を見つけます。
ログイン
ログインスクリプトは、Auth0に存在しないユーザーがログインを試みるたびに実行されます。ユーザーにパスワード入力を再度求めることなく、ユーザーが外部のユーザーストアに存在することを確認します。ユーザーの取得
ユーザー取得スクリプトは、以下のすべてのシナリオの後に実行されます。- ユーザーがサインアップ試行を開始
- ユーザーがパスワード変更フローを開始
- ユーザーがIdentifier First + 生体認証を使用する際に、ログインIDを入力
- のユーザーのメールアドレスまたはユーザー名の更新またはユーザーの作成エンドポイントが呼び出される
ユーザー移行の完了を確認する
すべてのユーザーがまたはAuth0 Management APIを使用してAuth0ユーザーストアに移行されたことを確認します。- [Auth0 Dashboard]>[User Management(ユーザー管理)]>[Users(ユーザー)]に移動し、ユーザーのリストを確認します。
- Management APIのユーザーのリストまたは検索エンドポイントを使用します。
外部ユーザーストアの接続解除
データベースのアクションスクリプトを操作なしの関数として再構成します。これにより、ユーザー認証のためにAuth0が外部ユーザーストアにアクセスするのを防ぎます。[Import Users to Auth0(ユーザーをAuth0にインポート)] オプションは、必ずオンのままにしておきます。このオプションを無効にすると、Auth0は、認証や他のユーザー操作を実行する際に、ローカルにインポートされたユーザーではなくスクリプトのみを使用します。
- [Auth0 Dashboard]>[Authentication(認証)]>[Database(データベース)]に移動し、データベース接続を選択します。
- [Custom Database(カスタムデータベース)] ビューに切り替え、[Database Action Scripts(データベースのアクションスクリプト)] を見つけます。
-
ログイン スクリプトを更新します。
-
ユーザー取得 スクリプトを更新します。
ユーザーの移行に関する問題のトラブルシューティング
自動移行で問題が生じた場合は、まず「カスタムデータベース接続とアクションスクリプトのベストプラクティス」をお読みください。ユーザーはすでに存在しています
この問題に遭遇する可能性が最も高いシナリオは次の通りです。- データベース接続からユーザーを削除した後、ユーザーの再作成を試みた
- 外部ユーザーストアに存在しているユーザーを、新規ユーザーとしてデータベース接続で作成を試みた
- ユーザーの移行プロセスが中断された
The user already exists
(ユーザーはすでに存在しています)エラーの可能性があります。
この問題は通常、データベース接続からそのユーザーを削除し、内部のユーザーストアからもそのユーザーを削除したのち、移行プロセスを再試行することで解決できます。
- Real-time Webtask Logs拡張機能で
console.log()
ステートメントを確認します。 - Management APIのユーザー削除エンドポイントでユーザーを削除します。
- Management APIの接続ユーザー削除エンドポイントでユーザーを削除します。
- 移行を再試行するため、ユーザーにログインまたはパスワードの変更を指示します。
メタデータの不足
ユーザーが移行プロセスを開始するログインまたはパスワード変更のフロー中に中断された場合、Auth0はそのメタデータ(user_metadata
またはapp_metadata
)および他のプロファイルデータを移行できない可能性があります。
このようなシナリオは、ユーザープロファイルにメタデータが不足していないかを確認して、外部ユーザーストアから取得してAuth0に保存するアクションを作成することで減らせます。