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

# データベース接続のパスキー認証を有効化して設定する

> Auth0 Dashboard を使用して、データベース接続で認証方式としてパスキーを有効にし、パスキー認証の UI、段階的登録、ローカル登録を設定します。

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "Beta",
    "ea": "早期アクセス"
  };
  const stageText = stageTextMap[stage] || "製品リリース段階";
  const prsLink = "/docs/troubleshoot/product-lifecycle/product-release-stages";
  const linkify = (text, url) => {
    return <a href={url} target="_blank" rel="noreferrer" class="link">{text}</a>;
  };
  const includeDetails = (plans, contact, terms) => {
    const hasDetails = terms || plans || contact;
    if (!hasDetails) return null;
    return <span data-as="p">
            {plans && <>この機能は{linkify(`${plans}プラン`, "https://auth0.com/pricing")}でご利用いただけます。 </>}
            {contact && "参加をご希望の場合は、" + contact + "までお問い合わせください。 "}
            {terms && <>この機能を使用することにより、Oktaの該当する無料トライアル規約および{linkify("Master Subscription Agreement", "https://www.okta.com/legal")}に同意したものとみなされます。</>}
        </span>;
  };
  return <Warning>
            <span data-as="p">
                <strong>{feature}機能は現在、{linkify(stageText, prsLink)}です。</strong>
            </span>

            {includeDetails(plans, contact, terms)}
        </Warning>;
};

<div id="prerequisites">
  ## 前提条件
</div>

データベース接続でパスキーを有効にするには、事前に以下の前提条件を満たしておく必要があります。

テナントでは、次の設定が必要です。

* [Universal Login を有効にする](/docs/ja-jp/authenticate/login/auth0-universal-login/universal-login-vs-classic-login/universal-experience)。

* [Identifier First 認証を有効にする](/docs/ja-jp/authenticate/login/auth0-universal-login/identifier-first)。

* カスタムログインページを無効にします。Auth0 Dashboard で [Branding > Universal Login > Manage Classic Login > Login](https://manage.auth0.com/#/login_page) に移動し、**Custom Login Page** トグルをオフにします。

データベース接続では、次の設定が必要です。

* データベース接続で [ユーザー名を必須にする](/docs/ja-jp/authenticate/database-connections/require-username) を無効にするか、または [Flexible Identifiers を有効にする](/docs/ja-jp/authenticate/database-connections/flexible-identifiers-and-attributes)。

* [独自のデータベースを使用する](/docs/ja-jp/authenticate/database-connections/custom-db/create-db-connection) を無効にするか、または [ユーザーのインポート](/docs/ja-jp/authenticate/database-connections/custom-db/templates) (**Import Users to Auth0**) を有効にする。

  ユーザーのインポート (**Import Users to Auth0**) を有効にせずに独自のデータベースを使用する場合は、[以下のデータベースアクションスクリプトの更新に関する追加の前提条件](#early-access-use-your-own-database-without-user-import-enabled)に従ってください。

パスキーを有効にしたデータベース接続でも、パスワードは引き続き有効にしておく必要があります。これにより、パスキーにまだ対応していないブラウザーや古いデバイスからでも、ユーザーは引き続きアカウントにアクセスできます。

### <Badge color="yellow">早期アクセス</Badge> ユーザーインポートを有効にしないまま独自のデータベースを使用する

パスキー認証で、ユーザーインポートを有効にしないまま独自のデータベースを使用できるようになりました。これにより、外部ユーザーストアに対する認証を継続しながら、カスタムデータベース接続でパスキー認証を提供できます。

前提条件として、identifier と `user_id` の両方でユーザーを処理できるように、Get User と Create の[データベースアクションスクリプト](/docs/ja-jp/authenticate/database-connections/custom-db/templates)を更新する必要があります。

<Accordion title="ユーザーインポートを有効にしないまま独自のデータベースでパスキーを有効にするためのデータベースアクションスクリプト更新方法">
  <ReleaseStageNotice feature="passkeys for using your own database wihtout user import enabled" stage="ea" terms="true" />

  1. まず、データベース接続でユーザーインポートが無効になっていることを確認します。

  2. [context object のサポートを有効にします](/docs/ja-jp/authenticate/database-connections/custom-db/create-db-connection#enable-context-object)。これにより、データベースアクションスクリプトで `context` パラメーターを使用できるようになり、identifier と `user_id` の両方の検索をサポートするために必要となります。

  3. Get User スクリプトは、identifier による検索 (`context.identifierType` が設定されていない場合) と、`user_id` による検索 (`context.identifierType` が `user_id` に設定されている場合) の両方をサポートする必要があります。

     [Get User データベースアクションスクリプト](/docs/ja-jp/authenticate/database-connections/custom-db/templates/get-user)を `getByEmail` から、提供されている `getUser` 関数に更新します。

     ```js theme={null}
     function getByEmail(email, callback) { // [!code --] 
     function getUser(identifierValue, context, callback) { // [!code ++] 
         const axios = require('axios');

         // context からユーザー識別子を取得 // [!code ++]
         const identifierType = context.identifierType || 'email'; // [!code ++]

         // 外部ユーザー取得エンドポイントに置き換えてください 
         const url = configuration.baseAPIUrl
                     + `/get_user/${email}?type=email`; // [!code --]
                     + `/get_user/${identifierValue}?type=${identifierType}`; // [!code ++]

         axios.get(url)
             .then(response => {
                 // 見つかった場合はユーザーオブジェクトを返す
                 const user = response.data; 
                 return callback(null, {
                     user_id: user.user_id,
                     email: user.email
                     // 必要に応じて他のユーザー属性も含める 
                 });
             })
             .catch(error => {
                 // エラーレスポンスを処理する 
                 return callback(null);
             });
     }
     ```

  4. Create スクリプトは、有効なユーザープロファイルを返す必要があります。属性が有効になっている場合、返されるユーザープロファイルは Login スクリプトおよび Get User スクリプトと同じ検証に従う必要があります。属性が有効になっていない場合、返されるユーザープロファイルには `user_id` の値を含める必要があります。

     [Create データベースアクションスクリプト](/docs/ja-jp/authenticate/database-connections/custom-db/templates/create)を更新して、有効なユーザープロファイルを返すようにします。

     ```js theme={null}
     function create(user, callback) {
         const axios = require('axios');

         // 外部ユーザー作成エンドポイントに置き換えてください
         const url = 'https://example.com/api/create'; 

         const payload = {
             email: user.email
             // 必要に応じて他のユーザープロパティを追加
         };

         axios.post(url, payload)
             .then(response => {
                 // 作成された場合はユーザーオブジェクトを返す
                 const createdUser = response.data; 

                 return callback(null, {
                     user_id: createdUser.user_id,
                     email:createdUser.email
                     // 必要に応じて他のユーザー属性も含める
                 });
             })
             .catch(error => {
                 // エラーレスポンスを処理する 
                 return callback(error);
             }); 
     }
     ```
</Accordion>

<div id="configure-passkeys">
  ## パスキーを設定する
</div>

前提条件を満たしたら、Auth0 Dashboard を使用してパスキーを有効化し、設定できます。

<Steps titleSize="h3">
  <Step title="パスキー設定を開く">
    [Authentication > Database](https://manage.auth0.com/#/connections/database) に移動し、編集するデータベース接続の名前を選択します。

    **Authentication Methods** タブを選択します。次に、**Passkey** セクションで **Configure** を選択して **Passkey** パネルを開きます。

    まだチェックされていない場合は、**Enable passkeys** をチェックします。
  </Step>

  <Step title="パスキー認証 UI を選択する">
    パスキー認証 UI では、ログイン時やサインアップ時にユーザーがどのようにパスキー認証を開始できるかを決定します。

    **Passkey Authentication UI** セクションで、3 つのオプションのいずれかを選択します。

    | Passkey authentication UI | Description                                                                                              |
    | ------------------------- | -------------------------------------------------------------------------------------------------------- |
    | Passkey button & autofill | ユーザーは、自動入力またはパスキーボタンを使ってパスキーで認証できます。                                                                     |
    | Autofill                  | ユーザーがパスキーを使用するには、ブラウザーの自動入力機能を使ってログインする必要があります。自動入力を使うと、資格情報を手動で入力する代わりに、ドロップダウンメニューから保存済みのアカウントを選択できます。 |
    | Passkey button            | ユーザーはログイン画面で **Continue with a passkey** ボタンを選択する必要があります。                                                |

    ユーザーのブラウザーで自動入力を利用できない場合、ユーザーはパスキーボタン (有効な場合) またはパスワードの資格情報を使ってログインできます。
  </Step>

  <Step title="段階的登録を有効にする（任意）">
    段階的登録では、ユーザーが識別子とパスワードでログインした後、まだパスキーを作成していない場合に、パスキーの作成を促します。このステップは必須ではなく、ユーザーはこの操作を 30 日ごとに延期できます。

    段階的登録は、ユーザーをパスキーに移行する際に、認証方法の切り替えを支援するのに役立ちます。

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      [組織への招待メール](/docs/ja-jp/manage-users/organizations/configure-organizations/invite-members)を通じてアカウントを作成する場合、ユーザーはパスキー認証を選択できません。こうしたユーザーがパスワードでログインした後にパスキーを作成できるよう、段階的登録を有効にできます。
    </Callout>

    **Progressive Enrollment** チェックボックスはデフォルトでオンになっていますが、チェックを外して無効にすることもできます。
  </Step>

  <Step title="ローカル登録を有効にする（任意）">
    パスキーユーザーがクロスデバイス パスキーを使用して新しいデバイスにログインすると、ローカル登録によって、その新しいデバイスにローカル パスキーを作成するよう促されます。これは必須ではないため、ユーザーはローカル パスキーの作成をスキップできます。

    **Local Enrollment** チェックボックスはデフォルトでオンになっていますが、チェックを外して無効にすることもできます。
  </Step>

  <Step title="設定を保存する">
    設定変更を保存するには、**Save** を選択します。

    保存ボタンが無効になっている場合は、**Passkey** パネル上部の **Passkey Authentication Prerequisites** セクションで、テナントとデータベース接続が正しく設定されていることを確認してください。
  </Step>
</Steps>

<div id="next-steps">
  ## 次のステップ
</div>

パスキーを使用するエンドユーザーに最適な体験を提供するために、以下の追加対応を検討するとよいでしょう。

<div id="configure-relying-party-id-rp-id">
  ### Relying Party ID (RP ID) を設定する
</div>

ユーザーが 1 つのパスキーで、すべてのサブドメインにまたがって認証できるようにするには (たとえば、`app.example.com` で提供されるネイティブアプリケーションと、`login.example.com` で提供される web app の両方) 、RP ID を親ドメインまたはルートドメインに設定できます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0 Dashboard または Management API で RP ID をカスタマイズすると、他のドメイン用のパスキーはすべて使用できなくなり、エンドユーザーは再登録が必要になります。
</Callout>

RP ID を正しく機能させるには、[アプリケーション設定](https://manage.auth0.com/#/applications) の **Allowed Origins (CORS)** リストに、アプリケーションのドメインを追加する必要があります。

Auth0 Dashboard で RP ID を設定するには、次の手順に従います。

1. **[Auth0 Dashboard > Tenant Settings](https://manage.auth0.com/#/tenant/relying_party_ids)** に移動します。
2. **Relying Party IDs** タブを選択します。
3. **Edit Relying Party ID** を選択します。
4. ドメインを入力します。
5. この RP ID がルートドメインである場合は、チェックボックスをオンにして、そのドメインをテナントのデフォルトとして設定します。
6. **Save** を選択します。
7. 次に、Relying Party ID を設定するアプリケーションに移動します。
8. アプリケーション設定を選択します。
9. **Application URIs** セクションで、Allowed Origins (CORS) にアプリケーションのドメインを追加します。
10. **Save** を選択します。

<div id="configure-a-custom-domain">
  ### カスタムドメインを設定する
</div>

ユーザーがパスキーを登録すると、そのパスキーは <Tooltip tip="ユーザーを認証するためにサードパーティのアイデンティティプロバイダーに依存するエンティティ（サービスやアプリケーションなど）。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=relying+party">Relying Party</Tooltip> のドメインに関連付けられます。ドメイン名が変わると、古いドメインに関連付けられているパスキーはすべて無効になります。

エンドユーザーへの影響を避けるため、パスキーを有効にする前に、テナント用の[カスタムドメイン](/docs/ja-jp/customize/custom-domains)を設定することを検討してください。

テナントで [複数のカスタムドメイン](/docs/ja-jp/customize/custom-domains/multiple-custom-domains) が有効になっている場合、Auth0 はドメインとそのドメイン用のパスキーを 1 対 1 で対応付けます。

ユーザーは、テナント上の複数のカスタムドメインのうち、1 つのドメイン (最初に登録したドメイン) に対してのみパスキーを登録できます。パスワードレスログインでは、選択したカスタムドメインが、パスワードレスのログインフロー用の Magic Link に反映されている必要があります。

<div id="bypass-multi-factor-authentication">
  ### 多要素認証を回避する
</div>

[多要素認証](/docs/ja-jp/secure/multi-factor-authentication) を有効にしている場合、デフォルトでは、認証方式がパスワードでもパスキーでも、MFAチャレンジを完了する必要があります。

パスキーは高いセキュリティを提供するため、[post-login Action を使用してパスキー認証時の MFA をスキップ](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger#reduce-friction-with-passkeys)できます。
