> ## Documentation Index
> Fetch the complete documentation index at: https://auth0-automated-translations-update.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 外部ユーザーストアからAuth0への自動移行を有効にする

> カスタムデータベース接続でインポートモードを有効にすると、ユーザーがログインするたびに外部ユーザーストアからAuth0へ段階的に移行できます。

[カスタムデータベース接続](/docs/ja-jp/authenticate/database-connections/custom-db)を使用する場合、Auth0では外部ユーザーストアからAuth0ユーザーストアへのユーザーの自動移行 (*トリクル移行*または*遅延移行*とも呼ばれます) がサポートされています。

Auth0へのインポート対象として設定されたカスタムデータベース接続を介してユーザーが認証されると、次の処理が行われます。

```mermaid actions={false} theme={null}
%%{init: {"flowchart": {"defaultRenderer": "elk"}}}%%
flowchart TD
    classDef successColor color:green,stroke:green
    classDef failColor color:red,stroke:red

    User(ユーザーはAuth0に存在するか？)
    ValidDB(ユーザー名とパスワードは外部データベースで有効か？)
    ValidAuth0(パスワードはAuth0で有効か？)
    Store(ユーザー情報とパスワードのハッシュ値をAuth0データベースに保存)
    Success([成功]):::successColor
    Failure([失敗]):::failColor

    User -- Yes --> ValidAuth0
    User -. No .-> ValidDB
    ValidAuth0 -. No .-> Failure
    ValidAuth0 -- Yes --> Success
    ValidDB -. No .-> Failure
    ValidDB -- Yes --> Store
    Store --> Success
```

ユーザーがAuth0ユーザーストアに存在しない場合、Auth0は外部ユーザーストアに対して認証を行い、認証に成功すると、認証時に指定されたIDとパスワードを使用してAuth0ユーザーストアにユーザーを作成します。

これにより、既存のユーザーは初回ログイン時にAuth0へ移行されるため、パスワードをリセットする必要はありません。新規ユーザーはAuth0ユーザーストアに直接追加されます。

<h2 id="start-the-migration">
  移行を開始する
</h2>

<Steps>
  <Step title="前提条件">
    自動移行を設定するには、次のものが必要です。

    * 外部ユーザーストアを使用する[カスタムデータベース接続](/docs/ja-jp/authenticate/database-connections/custom-db/create-db-connection)
  </Step>

  <Step title="移行を有効にする">
    [Auth0 Dashboard > Authentication > Database](https://manage.auth0.com/#/connections/database) で、カスタムデータベース接続を選択します。

    **設定**タブで、**Import Users to Auth0** をオンにし、**Save** を選択します。
  </Step>

  <Step title="データベースアクションスクリプトを設定する">
    [データベースアクションスクリプト](/docs/ja-jp/authenticate/database-connections/custom-db/templates)は、ユーザーのログインやサインアップ時など、Auth0 が外部ユーザーストアとやり取りする際に実行するコードです。

    次に、**Custom Database** タブで、**Database Action Scripts** セクションを見つけます。

    <Frame>
      <img src="https://mintlify.s3.us-west-1.amazonaws.com/auth0-automated-translations-update/images/authentication/database/example/custom-database/action-scripts_login.png" alt="Custom Database > Database Action Scripts > Login" />
    </Frame>

    自動移行を有効にするには、次の 2 つのスクリプトを実装する必要があります。

    * [`login()` スクリプト](/docs/ja-jp/authenticate/database-connections/custom-db/templates/login)：Auth0 データベースに存在しないユーザーがログインしようとしたときに実行されます。

    * [`getUser()` スクリプト](/docs/ja-jp/authenticate/database-connections/custom-db/templates/get-user)：サインアップやパスワード変更などの際に実行されます。`getUser()` スクリプトから返されたデータは、新しい Auth0 ユーザープロファイルに移行されます。
  </Step>
</Steps>

<h2 id="manage-external-user-store-data-during-migration">
  移行中の外部ユーザーストアデータの管理
</h2>

自動移行時に外部ユーザーストアのユーザーデータを扱う際は、以下のベストプラクティスに従うことをお勧めします。

* 明示的にアーカイブまたは削除しない限り、ユーザーは外部ユーザーストアに残ります。ユーザーがAuth0に移行された後、Auth0から削除されても外部ユーザーストアに残っている場合、そのユーザーがログインを試みて再度移行される可能性があります。

  意図的に削除したユーザーが意図せず再作成されるのを防ぐため、LoginまたはGet Usersのカスタムデータベースアクションスクリプトを実行する前に、外部ユーザーストア内のユーザーIDを移行済みとしてマークすることをお勧めします。

* 通常、Auth0ユーザーストア内のユーザーは、[Loginアクションスクリプト](/docs/ja-jp/authenticate/database-connections/custom-db/templates/login)の完了後に作成されます。Loginスクリプト内でインライン操作として外部ユーザーストアからユーザーを削除するのではなく、移行中にエラーが発生した場合のユーザーの誤削除を避けるため、独立したプロセスとしてユーザーを削除することをお勧めします。

<h2 id="complete-the-migration">
  移行を完了する
</h2>

<Steps>
  <Step title="移行の完了を確認する">
    外部ユーザーストアのすべてのユーザーがAuth0ユーザーストアに存在することを確認し、移行が完了していることを検証します。

    Auth0ユーザーストア内のすべてのユーザーは、次の2つの方法で確認できます。

    * [Auth0 Dashboard > User Management > Users](https://manage.auth0.com/#/users)。

    * Management APIの[List or Search users endpoint](/docs/ja-jp/api/management/v2/users/get-users) (`GET /users`) 。
  </Step>

  <Step title="外部ユーザーストアを切断する">
    すべてのユーザーが移行されたことを確認したら、データベースアクションスクリプトを何も実行しない関数に更新することで、外部ユーザーストアを切断できます。これにより、Auth0がユーザーを認証するために外部ユーザーストアへ接続しなくなります。

    <Warning>
      **Import Users to Auth0**オプションはオンのままにしてください。この設定により、Auth0はカスタムデータベース接続でAuth0ユーザーストアを使用します (データベースアクションスクリプトを介して外部ユーザーストアのみを使用するのではなく) 。
    </Warning>

    [Auth0 Dashboard > Authentication > Database](https://manage.auth0.com/#/connections/database)でデータベース接続を選択します。**Custom Database**タブで、**Database Action Scripts**セクションを探します。

    **Login**スクリプトを更新します。

    ```javascript lines theme={null}
    function login (email, password, callback) {
        return callback(null, null);
    }
    ```

    **Get User**スクリプトを更新します。

    ```javascript lines theme={null}
    function getByEmail (email, callback) {
        return callback(null, null);
    }
    ```
  </Step>
</Steps>

<h2 id="troubleshoot-user-migration-issues">
  ユーザー移行の問題のトラブルシューティング
</h2>

自動移行で問題が発生した場合は、まず [カスタムデータベース接続とアクションスクリプトのベストプラクティス](/docs/ja-jp/authenticate/database-connections/custom-db/custom-database-connections-scripts) を参照してください。

<h3 id="duplicated-user-or-user-already-exists">
  重複したユーザーまたはユーザーはすでに存在します
</h3>

ユーザー移行プロセスでは、Auth0 はまず内部ユーザーストアに不完全なユーザープロファイルを作成し、その後、データベース接続に完全なユーザープロファイルを作成します。何らかの問題が発生してこの完全なユーザープロファイルを作成できない場合、"The user already exists" エラーが発生することがあります。

`DUPLICATED_USER` エラーは、ユーザーが Auth0 の内部ユーザーストアには存在するものの、テナントには存在しないことを示します。次の場合にこのエラーが発生することがあります。

* 複数の移行方法を使用しようとする (例：自動移行の後に一括ユーザーインポートを行う) 。
* データベース接続からユーザーを削除した後、そのユーザーを再作成しようとする。
* ユーザーが外部ユーザーストアにすでに存在している状態で、データベース接続に新しいユーザーを作成しようとする。

`DUPLICATED_USER` または "The user already exists" エラーを解決するには、次の手順を実行します。

1. [Actions リアルタイムログ](/docs/ja-jp/customize/actions/actions-real-time-logs) で `console.log()` の出力を確認します。

2. Management API の [Delete a User](https://auth0.com/docs/api/management/v2#!/Users/delete_users_by_id) エンドポイントを使用してユーザーを削除します。

3. Management API の [Delete a Connection User](https://auth0.com/docs/api/management/v2#!/Connections/delete_users_by_email) エンドポイントを使用してユーザーを削除します。

4. ユーザーに、移行を再試行するため、ログインするかパスワードを変更するよう案内します。

<h3 id="missing-metadata">
  メタデータの欠落
</h3>

移行プロセスが開始されるログインまたはパスワード変更フローの途中でユーザーの操作が中断されると、Auth0 が他のプロファイルデータとあわせてそのメタデータ (`user_metadata` または `app_metadata`) を移行できない場合があります。

この問題は、ユーザーのプロファイルにメタデータがないことを確認し、外部ユーザーストアから取得して Auth0 に保存する [Action](/docs/ja-jp/customize/actions) を作成することで軽減できます。


## Related topics

- [Bulk Import User Data into Auth0 Database Connections](/docs/manage-users/user-migration/bulk-user-imports.md)
- [User Data JSON Schema for Bulk User Imports](/docs/manage-users/user-migration/bulk-user-import-schema.md)
- [Bulk Export User Data](/docs/manage-users/user-migration/bulk-user-exports.md)
- [Export Password Hashes and MFA Secrets](/docs/manage-users/user-migration/export-password-hashes-and-mfa-secrets.md)
