複数の移行方法(たとえば、自動移行をしてからユーザーの一括インポート)を使用しようとすると、
DUPLICATED_USER
エラーが発生することがあります。このエラーは、ユーザーがAuth0の内部ユーザーストアに存在するものの、テナントには存在しないことを示します。このエラーを修正するには、Auth0 Management APIの接続ユーザー削除エンドポイントでユーザーを削除してから、インポートを再試行します。前提条件
ユーザーインポートジョブを実行する前に、以下を行います。- データベース接続をユーザーのインポートに構成して、少なくとも1つのアプリケーションに有効化します。
- パスワードをインポートする場合には、対応しているアルゴリズムの1つを使ってパスワードがハッシュ化されていることを確認します。ユーザーのパスワードが非対応のアルゴリズムでハッシュ化されている場合には、一括インポート後に初回のログインでユーザーがパスワードをリセットする必要があります。
- の登録をインポートする場合には、対応している
email
、phone
またはtotp
のタイプであることを確認します。 - ジョブエンドポイントの要求に、Management APIトークンを取得します。
Auth0テナントからエクスポートしたファイルを使用する場合は、
ndjson
からJSONに変換する必要があります。同じユーザーIDを維持するために、インポートするユーザーIDからauth0| prefix
を削除しなければなりません。インポート処理では、ユーザーIDに自動的にauth0| prefix
が追加されます。インポートする前にauth0| prefix
を削除しなかった場合、ユーザーIDは、auth0|auth0|...
として返されます。ユーザーのJSONファイルを作成する
Auth0にインポートしたいユーザーデータを含むJSONファイルを作成します。ユーザーデータをJSONファイルにエクスポートする方法は、既存のユーザーデータベースによって異なります。のエンドポイントはJSONファイルを期待します。そのため、fs.readFileSync
ではなく、fs.createReadStream
を使用する必要があります。エンドポイントは、JSONファイルではなく、パイプで連結された読み出しストリームを期待します。
JSONファイルのスキーマと例については、「一括インポートのデータベーススキーマと例」をお読みください。
一括インポートでのファイルサイズは、500 KBが上限です。データがこのサイズを上回る場合には、複数のインポートを開始する必要があります。
一括ユーザーインポートを要求する
一括ユーザーインポートジョブを始めるには、POST
要求を一括ユーザーインポートジョブ作成エンドポイントに対して行います。必ず、MGMT_API_ACCESS_TOKEN
、USERS_IMPORT_FILE.json
、CONNECTION_ID
、およびEXTERNAL_ID
のプレースホルダーの値をそれぞれManagement APIのアクセストークン、ユーザーのJSONファイル、データベース接続IDと外部IDに置き換えます。
パラメーター | 説明 |
---|---|
users | インポートするユーザーを含むJSON形式のファイルです。 |
connection_id | ユーザーが投入される接続のIDです。IDはGET /api/v2/connectionsを使って取得することができます。 |
upsert | ブール値で、デフォルトはfalse です。false では、メールアドレス、ユーザーID、電話番号、またはユーザー名が一致する既存のユーザーの場合、エラーになります。trueでは、メールアドレスが一致する既存のユーザーは更新されますが、更新されるのはアップサートできる属性のみです。インポートでアップサート可能なユーザープロファイルのフィールドについては、「ユーザープロファイルの構造:ユーザープロファイル属性」を参照してください。注意:インポートファイルに重複したユーザーが存在する場合はエラーになります。その場合、Auth0は投入や更新を行いません。 |
external_id | 任意のユーザー定義の文字列で、複数のジョブを関連付けるのに使うことができます。ジョブステータス応答の一部として返されます。 |
send_completion_email | ブール値で、デフォルトはtrue です。true では、インポートジョブが終了すると、すべてのテナント所有者に完了メールを送信します。メールを送信したくない場合には、このパラメーターをfalse に設定する必要があります。 |
send_completion_email
がtrue
に設定されている場合には、ジョブの成功または失敗がテナント管理者に通知されます。ジョブ失敗のメールでは、ユーザーのインポートでユーザーのJSONファイルが解析に失敗したことを管理者に知らせる場合もあります。
複数のインポートジョブを同時に実行する
ユーザーインポートジョブ作成エンドポイントでは、同時に実行可能なインポートジョブが2つまでに制限されています。2つのジョブが保留中の場合に追加のジョブを要求すると、429 Too Many Requests
(要求が多すぎます)応答が返されます。
ジョブステータスを確認する
ジョブのステータスを確認するには、GET
要求をジョブ取得エンドポイントに対して行います。必ず、MGMT_API_ACCESS_TOKEN
およびJOB_ID
のプレースホルダーの値をそれぞれManagement APIのアクセストークンとユーザーインポートジョブIDに置き換えます。
ジョブのタイムアウト
すべてのユーザーインポートジョブは、2時間 が経過するとタイムアウトします。ジョブがこの時間制限内に完了しない場合は、失敗としてマークされます。 また、ジョブ関連のデータはすべて24時間後に自動削除され、アクセスできなくなります。そのため、何らかのストレージメカニズムを使ってジョブ結果を保管することを強くお勧めします 。ログエントリを取得する
ジョブ関連のデータは、すべて24時間後に自動削除され、アクセスできなくなります。そのため、何らかの保管メカニズムを使ってジョブ結果を保管することを強くお勧めします。
GET
要求をジョブエラー詳細取得エンドポイントに行って、エラー詳細を取得することができます。必ず、MGMT_API_ACCESS_TOKEN
およびJOB_ID
のプレースホルダーの値をそれぞれManagement APIのアクセストークンとユーザーインポートジョブIDに置き換えます。
hash.value
などの機密フィールドは応答内でマスクされます。
- ANY_OF_MISSING
- ARRAY_LENGTH_LONG
- ARRAY_LENGTH_SHORT
- CONFLICT
- CONFLICT_EMAIL
- CONFLICT_USERNAME
- CONNECTION_NOT_FOUND
- DUPLICATED_USER
- ENUM_MISMATCH
- FORMAT
- INVALID_TYPE
- MAX_LENGTH
- MAXIMUM
- MFA_FACTORS_FAILED
- MIN_LENGTH
- MINIMUM
- NOT_PASSED
- OBJECT_REQUIRED
- PATTERN