> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-docs-event-stream-action-templates.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# データベースからの自動移行を構成する

> カスタムデータベースでユーザーの自動移行を有効にする方法を説明します。

データベース接続を構成し、[カスタムデータベースのアクションスクリプト](/docs/ja-jp/authenticate/database-connections/custom-db/templates)を使用して、外部のユーザーストアからAuth0にユーザーを自動移行します。

<Warning>
  複数の移行方法（たとえば、自動移行をしてからユーザーの一括インポート）を使用しようとすると、`DUPLICATED_USER`エラーが発生することがあります。このエラーは、ユーザーがAuth0の内部ユーザーストアに存在するものの、テナントには存在しないことを示します。このエラーを修正するには、Auth0 Management APIの[接続ユーザー削除](https://auth0.com/docs/api/management/v2#!/Connections/delete_users_by_email)エンドポイントでユーザーを削除してから、インポートを再試行します。
</Warning>

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

データベース接続を作成し、カスタムに設定します。

1. [［Auth0 Dashboard］>［Authentication（認証）］>［Database（データベース）］](https://manage.auth0.com/#/connections/database)に移動し、データベースを選択して表示します。

2. **［Custom Database（カスタムデータベース）］** ビューを選択し、**［Use my own database（独自のデータベースを使用する）］** を有効にします。

   <Frame>
     <img src="https://mintcdn.com/docs-dev-docs-event-stream-action-templates/1FU_hDyg-ytA7ilg/docs/images/ja-jp/cdy7uua7fh8z/11HPAdVwJMmnWbzMVjHCJ8/e8a63cd05212da39164cab0114d1f89b/2025-02-27_17-26-24.png?fit=max&auto=format&n=1FU_hDyg-ytA7ilg&q=85&s=2ec02629a386d3b99530a1936e8b8537" alt="Auth0 Dashboard 認証 データベース接続 カスタムデータベース設定 独自のデータベース使用有効" width="799" height="422" data-path="docs/images/ja-jp/cdy7uua7fh8z/11HPAdVwJMmnWbzMVjHCJ8/e8a63cd05212da39164cab0114d1f89b/2025-02-27_17-26-24.png" />
   </Frame>

3. **［Settings（設定）］** ビューを選択し、**［Import Users to Auth0（ユーザーをAuth0にインポート）］** を有効にしたのち、**［Save（保存）］** を選択します。

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

**［Custom Database（カスタムデータベース）］** ビューを選択し、**［Database Action Scripts（データベースのアクションスクリプト）］** を見つけます。

<Frame>
  <img src="https://mintcdn.com/docs-dev-docs-event-stream-action-templates/f9tcsxrYvRYBs4lY/docs/images/ja-jp/cdy7uua7fh8z/4LBIvvjaABo51It4eVCmX3/2783d88846c74a5766908fda8005783e/Database_Action_Scripts.png?fit=max&auto=format&n=f9tcsxrYvRYBs4lY&q=85&s=de456c0c789a4052535347c85eab66f9" alt="Dashboard 認証 データベース接続 カスタムデータベースタブ データベースのアクションスクリプト" width="1132" height="845" data-path="docs/images/ja-jp/cdy7uua7fh8z/4LBIvvjaABo51It4eVCmX3/2783d88846c74a5766908fda8005783e/Database_Action_Scripts.png" />
</Frame>

### ログイン

[ログイン](/docs/ja-jp/authenticate/database-connections/custom-db/templates/login)スクリプトは、Auth0に存在しないユーザーがログインを試みるたびに実行されます。ユーザーにパスワード入力を再度求めることなく、ユーザーが外部のユーザーストアに存在することを確認します。

### ユーザーの取得

[ユーザー取得](/docs/ja-jp/authenticate/database-connections/custom-db/templates/get-user)スクリプトは、以下のすべてのシナリオの後に実行されます。

* ユーザーがサインアップ試行を開始
* ユーザーがパスワード変更フローを開始
* ユーザーがIdentifier First + 生体認証を使用する際に、ログインIDを入力
* <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>の[ユーザーのメールアドレスまたはユーザー名の更新](/docs/ja-jp/api/v2#!/Users/patch_users_by_id)または[ユーザーの作成](/docs/ja-jp/api/management/v2#!/Users/post_users)エンドポイントが呼び出される

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

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

すべてのユーザーが<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=auth0-dashboard" tip="Auth0 Dashboard: サービスを構成するためのAuth0の主製品。" cta="用語集の表示">Auth0 Dashboard</Tooltip>またはAuth0 Management APIを使用してAuth0ユーザーストアに移行されたことを確認します。

1. [［Auth0 Dashboard］>［User Management（ユーザー管理）］>［Users（ユーザー）］](https://manage.auth0.com/#/users)に移動し、ユーザーのリストを確認します。
2. Management APIの[ユーザーのリストまたは検索](/docs/ja-jp/api/v2#!/Users/get_users)エンドポイントを使用します。

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

データベースのアクションスクリプトを操作なしの関数として再構成します。これにより、ユーザー認証のためにAuth0が外部ユーザーストアにアクセスするのを防ぎます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  **［Import Users to Auth0（ユーザーをAuth0にインポート）］** オプションは、必ずオンのままにしておきます。このオプションを無効にすると、Auth0は、認証や他のユーザー操作を実行する際に、ローカルにインポートされたユーザーではなくスクリプトのみを使用します。
</Callout>

1. [［Auth0 Dashboard］>［Authentication（認証）］>［Database（データベース）］](https://manage.auth0.com/#/connections/database)に移動し、データベース接続を選択します。

2. **［Custom Database（カスタムデータベース）］** ビューに切り替え、**［Database Action Scripts（データベースのアクションスクリプト）］** を見つけます。

3. **ログイン** スクリプトを更新します。

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

4. **ユーザー取得** スクリプトを更新します。

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

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

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

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

この問題に遭遇する可能性が最も高いシナリオは次の通りです。

* データベース接続からユーザーを削除した後、ユーザーの再作成を試みた
* 外部ユーザーストアに存在しているユーザーを、新規ユーザーとしてデータベース接続で作成を試みた
* ユーザーの移行プロセスが中断された

ユーザーの移行プロセスの間、Auth0はまず、内部のユーザーストアで部分的なユーザープロファイルを作成してから、データベース接続で完全なユーザープロファイルを作成します。完全なユーザープロファイルの作成を妨げる問題が生じた場合、`The user already exists`（ユーザーはすでに存在しています）エラーの可能性があります。

この問題は通常、データベース接続からそのユーザーを削除し、内部のユーザーストアからもそのユーザーを削除したのち、移行プロセスを再試行することで解決できます。

1. [Actions リアルタイムログ](/docs/ja-jp/customize/actions/actions-real-time-logs)で`console.log()`ステートメントを確認します。
2. Management APIの[ユーザー削除](https://auth0.com/docs/api/management/v2#!/Users/delete_users_by_id)エンドポイントでユーザーを削除します。
3. Management APIの[接続ユーザー削除](/docs/ja-jp/api/management/v2#!/Connections/delete_users_by_email)エンドポイントでユーザーを削除します。
4. 移行を再試行するため、ユーザーにログインまたはパスワードの変更を指示します。

### メタデータの不足

ユーザーが移行プロセスを開始するログインまたはパスワード変更のフロー中に中断された場合、Auth0はそのメタデータ（`user_metadata`または`app_metadata`）および他のプロファイルデータを移行できない可能性があります。

このようなシナリオは、ユーザープロファイルにメタデータが不足していないかを確認して、外部ユーザーストアから取得してAuth0に保存する[アクション](/docs/ja-jp/customize/actions)を作成することで減らせます。

## もっと詳しく

* [一括ユーザーインポート](/docs/ja-jp/manage-users/user-migration/bulk-user-imports)
* [ユーザーのインポート/エクスポート拡張機能](/docs/ja-jp/manage-users/user-migration/user-import-export-extension)
