メインコンテンツへスキップ
データベース接続を構成し、カスタムデータベースのアクションスクリプトを使用して、外部のユーザーストアからAuth0にユーザーを自動移行します。
複数の移行方法(たとえば、自動移行をしてからユーザーの一括インポート)を使用しようとすると、DUPLICATED_USERエラーが発生することがあります。このエラーは、ユーザーがAuth0の内部ユーザーストアに存在するものの、テナントには存在しないことを示します。このエラーを修正するには、Auth0 Management APIの接続ユーザー削除エンドポイントでユーザーを削除してから、インポートを再試行します。

データベース接続をカスタムとして構成する

データベース接続を作成し、カスタムに設定します。
  1. [Auth0 Dashboard]>[Authentication(認証)]>[Database(データベース)]に移動し、データベースを選択して表示します。
  2. [Custom Database(カスタムデータベース)] ビューを選択し、[Use my own database(独自のデータベースを使用する)] を有効にします。
    Auth0 Dashboard 認証 データベース接続 カスタムデータベース設定 独自のデータベース使用有効
  3. [Settings(設定)] ビューを選択し、[Import Users to Auth0(ユーザーをAuth0にインポート)] を有効にしたのち、[Save(保存)] を選択します。

データベースのアクションスクリプトの構成

[Custom Database(カスタムデータベース)] ビューを選択し、[Database Action Scripts(データベースのアクションスクリプト)] を見つけます。
Dashboard 認証 データベース接続 カスタムデータベースタブ データベースのアクションスクリプト

ログイン

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

ユーザーの取得

ユーザー取得スクリプトは、以下のすべてのシナリオの後に実行されます。 移行されていないユーザーがパスワード変更を承認し、ログインに成功すると、ユーザープロファイルが新しいパスワードでAuth0に作成されます。このユーザープロファイルは、ユーザー取得スクリプトで返されたすべてのデータを含みます。ユーザーのこれ以降のすべてのログインは、Auth0で直接実行されます。

ユーザー移行の完了を確認する

すべてのユーザーがまたはAuth0 Management APIを使用してAuth0ユーザーストアに移行されたことを確認します。
  1. [Auth0 Dashboard]>[User Management(ユーザー管理)]>[Users(ユーザー)]に移動し、ユーザーのリストを確認します。
  2. Management APIのユーザーのリストまたは検索エンドポイントを使用します。

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

データベースのアクションスクリプトを操作なしの関数として再構成します。これにより、ユーザー認証のためにAuth0が外部ユーザーストアにアクセスするのを防ぎます。
[Import Users to Auth0(ユーザーをAuth0にインポート)] オプションは、必ずオンのままにしておきます。このオプションを無効にすると、Auth0は、認証や他のユーザー操作を実行する際に、ローカルにインポートされたユーザーではなくスクリプトのみを使用します。
  1. [Auth0 Dashboard]>[Authentication(認証)]>[Database(データベース)]に移動し、データベース接続を選択します。
  2. [Custom Database(カスタムデータベース)] ビューに切り替え、[Database Action Scripts(データベースのアクションスクリプト)] を見つけます。
  3. ログイン スクリプトを更新します。
    function login (email, password, callback) {
      return callback(null, null);
    }
    
  4. ユーザー取得 スクリプトを更新します。
    function getByEmail (email, callback) {
      return callback(null, null);
    }
    

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

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

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

この問題に遭遇する可能性が最も高いシナリオは次の通りです。
  • データベース接続からユーザーを削除した後、ユーザーの再作成を試みた
  • 外部ユーザーストアに存在しているユーザーを、新規ユーザーとしてデータベース接続で作成を試みた
  • ユーザーの移行プロセスが中断された
ユーザーの移行プロセスの間、Auth0はまず、内部のユーザーストアで部分的なユーザープロファイルを作成してから、データベース接続で完全なユーザープロファイルを作成します。完全なユーザープロファイルの作成を妨げる問題が生じた場合、The user already exists(ユーザーはすでに存在しています)エラーの可能性があります。 この問題は通常、データベース接続からそのユーザーを削除し、内部のユーザーストアからもそのユーザーを削除したのち、移行プロセスを再試行することで解決できます。
  1. Real-time Webtask Logs拡張機能console.log()ステートメントを確認します。
  2. Management APIのユーザー削除エンドポイントでユーザーを削除します。
  3. Management APIの接続ユーザー削除エンドポイントでユーザーを削除します。
  4. 移行を再試行するため、ユーザーにログインまたはパスワードの変更を指示します。

メタデータの不足

ユーザーが移行プロセスを開始するログインまたはパスワード変更のフロー中に中断された場合、Auth0はそのメタデータ(user_metadataまたはapp_metadata)および他のプロファイルデータを移行できない可能性があります。 このようなシナリオは、ユーザープロファイルにメタデータが不足していないかを確認して、外部ユーザーストアから取得してAuth0に保存するアクションを作成することで減らせます。

もっと詳しく

I