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

# 埋め込みアプリケーション向けのPasskey API

> Auth0 Passkey APIを使用して、iOS、Android、およびWebアプリケーション向けに埋め込み型パスキーによるサインアップ、ログイン、および登録フローを構築します。

パスキーは、従来の認証形式（ユーザー名やパスワードなど）よりもフィッシング耐性が高く、より簡単かつ安全なユーザーエクスペリエンスを提供します。パスキーは、FIDO® W3C Web Authentication（WebAuthn）と[Client to Authenticator Protocol（CTAP）](https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html#intro)の仕様をモデルとしています。

Auth0では現在、データベース接続の認証方法としてパスキーをサポートしており、2つの実装方式が用意されています。

* Webアプリケーション向けの[ユニバーサルログインのパスキー](/docs/authenticate/database-connections/passkeys)。
* ネイティブモバイルアプリケーション（iOS、Android）およびWebアプリケーション向けのPasskey API。
* [Webおよびネイティブアプリケーション向けの埋め込みログイン](/docs/authenticate/passwordless/implement-login/embedded-login)

<Card title="始める前に">
  **カスタムドメインを構成する**

  ネイティブのパスキーには<Tooltip tip="カスタムドメイン：特殊な名前、またはバニティ名を持つサードパーティのドメインの使用が必要です。" cta="用語集の表示" href="/docs/glossary?term=custom+domain">カスタムドメイン</Tooltip>。始める前に、テナントにカスタムドメインが構成されていることを確認してください。詳細については、「[カスタムドメイン](/docs/customize/custom-domains)」をお読みください。

  **パスキーポリシーを構成する**

  AndroidまたはiOSのアプリケーションにネイティブのパスキーを実装するには、まずAuth0テナントでパスキーポリシーを構成しなければなりません。テナントを準備するには、「[パスキーポリシーを構成する](/docs/authenticate/database-connections/passkeys/configure-passkey-policy)」に記載の手順に従います。

  **アプリケーションを準備する**

  Passkey APIを使用するすべてのアプリケーションは、`Passkey`の付与を追加して、[証明書利用者ID（RP ID）](/docs/authenticate/database-connections/passkeys/configure-passkey-policy#configure-relying-party-id-rp-id)を構成する必要があります。プラットフォームによっては、<Tooltip tip="Auth0 Dashboard：サービスを構成するためのAuth0の主製品から追加の設定を構成しなければならないこともあります。" cta="用語集の表示" href="/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip>または<Tooltip tip="Management API：顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示" href="/docs/glossary?term=Management+API">Management API</Tooltip>。
</Card>

## 仕組み

Passkey APIは、Auth0 Authentication APIとプラットフォーム固有の資格情報APIを組み合わせて、チャレンジフローをアプリケーションに直接埋め込みます。つまり、ネイティブモバイルアプリでは、iOSまたはAndroidのプラットフォームAPIを使用し、Webアプリケーションでは、WebAuthnブラウザAPIを使用します。これにより、認証を完了させるためにユーザーをブラウザからリダイレクトさせることなく、統合されたサインアップおよびログインエクスペリエンスを構築できます。

以下の例は、パスキーのサインアップフローで新しいユーザーが体験する可能性のあるプロセスを説明しています。

1. 新しいユーザーがモバイルアプリケーションを起動して、ログイン画面にアクセスします。新しいユーザーであるため、\*\*［サインアップ］\*\*を選択します。
2. ユーザーが次の画面でメールアドレスを入力し、\*\*［アカウントの作成］\*\*を選択します。
3. 次に、アプリケーションのパスキーを作成したいかがユーザーに尋ねられます。ユーザーが\*\*［続ける］\*\*を選択して続行します。
4. パスキーを生成するために、ユーザーは生体認証や他の認証方法（PINの入力など）を使って、デバイスをローカルで認証しなければなりません。
5. ローカルの認証が完了すると、新しいパスキーがユーザーのデバイスに保存され、iCloudキーチェーンやGoogleパスワードマネージャーなどのパスキープロバイダーと同期されます。
6. パスキーが保存されると、ユーザーが新規ユーザー登録プロセスを続行して、アカウント登録を完了させます。

このプロセスが完了すると、ユーザーはアプリケーションへの次回のログインで保存済みのパスキーを使って認証することができます。

## デバイスの設定を構成する

<Tabs>
  <Tab title="iOS">
    **Auth0 Dashboardでデバイスの設定を構成する**

    1. [アプリケーション > アプリケーション](https://manage.auth0.com/#/applications)に移動して、アプリケーションを選択します。
    2. ［設定］タブの下部にある\*\*［高度な設定］\*\*を選択します。
    3. \*\*［デバイス設定］\*\*タブを選択します。
    4. \*\*［iOS］\*\*セクションで、Appleからの次のIDを入力します。
       * チームID
       * App ID
    5. \*\*［変更を保存］\*\*を選択します。

    * Auth0は、構成されたチームIDおよびApp IDに基づいて、`https://YOUR_CUSTOM_DOMAIN/.well-known/apple-app-site-association`でテナントのカスタムドメイン上の[`apple-app-site-association`](https://developer.apple.com/documentation/xcode/supporting-associated-domains)ファイルを自動的にホストします。このファイルをご自身でホストする必要はありません。

    * Xcodeで、Associated Domainsのエンタイトルメントを有効にして、次のような形式でカスタムドメインのエントリを追加します：`webcredentials:YOUR_CUSTOM_DOMAIN`。
  </Tab>

  <Tab title="Android">
    **Auth0 Dashboardでデバイスの設定を構成する**

    1. [アプリケーション > アプリケーション](https://manage.auth0.com/#/applications)に移動して、アプリケーションを選択します。
    2. ［設定］タブの下部にある\*\*［高度な設定］**を選択して、**［デバイス設定］\*\*タブを選択します。
    3. \*\*［Android］\*\*セクションで、以下を入力します。
       * アプリパッケージ名
       * キーハッシュ。アプリケーションの[SHA-256署名証明書](/docs/get-started/applications/signing-algorithms)を入力します。
    4. \*\*［変更を保存］\*\*を選択します。

    Auth0は、構成されたパッケージ名およびSHA-256フィンガープリントに基づいて、自動的に`https://YOUR_CUSTOM_DOMAIN/.well-known/assetlinks.json`でテナントのカスタムドメイン上の[`assetlinks.json`ファイルをホスト](https://developers.google.com/digital-asset-links/v1/getting-started)します。このファイルをご自身でホストする必要はありません。
  </Tab>

  <Tab title="Web">
    **許可するWebオリジンを構成する**

    1. [アプリケーション > アプリケーション](https://manage.auth0.com/#/applications)に移動して、アプリケーションを選択します。
    2. ［設定］タブで、アプリケーションURIを見つけます。
    3. ［許可するWebオリジン］で、Webアプリケーションのオリジン（例：`https://YOUR_CUSTOM_DOMAIN`）を追加します。
    4. \*\*［変更を保存］\*\*を選択します。

    * Webアプリは、WebAuthnブラウザAPIを使用し、自動的にオリジン検証が処理されます。Webアプリケーションのアプリケーション関連ファイルは必要ありません。
    * 証明書利用者IDの`rpId`がWebアプリのオリジンと一致し、WebAuthnフローが成功することを確認します。
  </Tab>
</Tabs>

## `Passkey`の付与を有効にする

すべてのプラットフォームで`Passkey`の付与を有効にするには以下を行います。

1. [アプリケーション > アプリケーション](https://manage.auth0.com/#/applications)に移動して、アプリケーションを選択します。
2. ［高度な設定］セクションで、\*\*［付与タイプ］\*\*タブを選択します。
3. \*\*［パスキー］**の付与を有効してから、**［変更を保存］\*\*を選択します。

または、Management APIを使用します。
[クライアントの更新](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id)エンドポイントを呼び出します。

* `grant_types`を更新して、`urn:okta:params:oauth:grant-type:webauthn`を含めます。
* ネイティブアプリには、`mobile`オブジェクトを使用し、必要に応じてiOSおよびAndroidのデバイス設定を指定します。

## 証明書利用者ID（`rpId`）

異なるアプリケーションタイプまたは異なるサブドメインを持つアプリケーションタイプにおいて単一のパスキーを使用して認証するエンドユーザには、[Auth0 Dashboard > テナント設定](https://manage.auth0.com/#/tenant/relying_party_ids)で、ルートドメインまたは親ドメインに[証明書利用者IDを設定](/docs/authenticate/database-connections/passkeys#relying-party-id-for-passkeys)します。

## パスキーフローを実装する

アプリケーションには以下のパスキーフローを定義することができます。

* [サインアップフロー](#signup-flow)：新しいユーザーがユーザー登録プロセスでパスキーを生成して保存できるようにします。
* [ログインフロー](#login-flow)：パスキーに登録済みの既存のユーザーが、ログインプロセスで保存済みのパスキーを使って認証できるようにします。
* [登録フロー](#enrollment-flow)：既存のユーザーが認証後に自分のアカウントにパスキーを追加できるようにします。

### サインアップフロー

アプリケーションに初めてログインしようとしたときに、ユーザーがパスキーのサインアップフローを始めます。ユーザーが、既存の[識別子を提供](/docs/authenticate/database-connections/flexible-identifiers-and-attributes#attribute-and-identifier-definitions)した場合には、代わりに、ログインフローの完了をユーザーに求めることをお勧めします。そうしないと、アクションが失敗します。

<Warning>
  ネイティブパスキー登録は、サインアップ時に同じ接続で、SMS/メールOTP検証が必要な場合サポートされていません。
</Warning>

1. アプリケーションは、`POST /passkey/register`エンドポイントを呼び出して、サインアップチャレンジを開始します。

```bash lines theme={null}
POST /passkey/register
Content-Type: application/json

{
  "client_id": "YOUR_CLIENT_ID",
  "realm": "OPTIONAL_CONNECTION",
  "user_profile": {
    "email": "user@example.com",
    "name": "John Doe"
  }
},
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  * `realm`を指定しない場合には、テナントにデフォルトのディレクトリが使用されます。
  * デフォルトでは、`email`が必須の識別子です。データベース接続で[Flexible Identifiers](/docs/authenticate/database-connections/activate-and-configure-attributes-for-flexible-identifiers)を有効にした場合は、代わりに`email`、`phone_number`、または`username`の組み合わせを使用することができます。
</Callout>

2. Auth0は、`auth_session` IDとともに、パスキーの作成に必要な`PublicKeyCredentialCreationOptions`を返します。

```json lines theme={null}
{
  "authn_params_public_key": {
    "challenge": "GENERATED_CHALLENGE_FOR_THIS_SESSION",
    "timeout": 60000,
    "rp": {
      "id": "YOUR_CUSTOM_DOMAIN",
      "name": "YOUR_CUSTOM_DOMAIN"
    },
    "pubKeyCredParams": [
      { "type": "public-key", "alg": -8 },
      { "type": "public-key", "alg": -7 },
      { "type": "public-key", "alg": -257 }
    ],
    "authenticatorSelection": {
      "residentKey": "required",
      "userVerification": "preferred"
    },
    "user": {
      "id": "GENERATED_ID",
      "name": "USER_EMAIL",
      "displayName": "USER_EMAIL_OR_NAME"
    }
  },
  "auth_session": "SESSION_ID"
}
```

3. アプリケーションは、返された`PublicKeyCredentialCreationOptions`を使用して、ユーザーのデバイスにパスキーを作成します。方法はプラットフォームによって異なります。

<Tabs>
  <Tab title="iOS">
    `ASAuthorizationPlatformPublicKeyCredentialProvider`を使用して、Face ID、Touch ID、またはデバイスPINで資格情報を作成します。詳細については、「[iOSでの登録に関するドキュメント](https://developer.apple.com/documentation/authenticationservices/supporting-passkeys#Register-a-new-account-on-a-service)」をご覧ください。
  </Tab>

  <Tab title="Android">
    `CredentialManager`を使用して、生体認証またデバイスPIN認証で資格情報を作成します。詳細については、「[Androidでの登録に関するドキュメント](https://developer.android.com/identity/passkeys/create-passkeys)」をご覧ください。
  </Tab>

  <Tab title="Web">
    Auth0から返された`PublicKeyCredentialCreationOptions`と`navigator.credentials.create()`を使用します。詳細については、「[MDN Web Authentication API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API)」をご覧ください。
  </Tab>
</Tabs>

4. アプリケーションは、登録プロセスからの資格情報を使用して`POST /oauth/token`エンドポイントを呼び出し、資格情報をトークンと交換します。

```bash lines theme={null}
POST /oauth/token
Content-Type: application/json

{
  "grant_type": "urn:okta:params:oauth:grant-type:webauthn",
  "client_id": "YOUR_CLIENT_ID",
  "realm": "OPTIONAL_CONNECTION",
  "scope": "openid profile email",
  "audience": "YOUR_API_IDENTIFIER",
  "auth_session": "SESSION_ID_FROM_STEP_1",
  "authn_response": {
    "id": "BASE64URL_ID",
    "rawId": "BASE64URL_RAWID",
    "type": "public-key",
    "authenticatorAttachment": "platform",
    "response": {
      "clientDataJSON": "BASE64URL_CLIENT_DATA_JSON",
      "attestationObject": "BASE64URL_ATTESTATION_OBJECT"
    }
  }
}
```

5. Auth0は新しいユーザーアカウントを作成して、例が示すような要求されたトークンを返します。

```json lines theme={null}
{
  "access_token": "eyJz93a...TJVA95w",
  "refresh_token": "GEz...NaYM",
  "id_token": "eyJ0exA...f1jrv3",
  "token_type": "Bearer",
  "expires_in": 86400
}
```

サインアップフローの呼び出しおよびパラメーターについて詳しくは、「[Authentication API Explorer](/api/authentication)」をご覧ください。

### ログインフロー

既存のユーザーがアプリケーションにログインしようとしたときに、パスキーのログインフローを始めます。このフローは、既存のユーザーが最初のサインアップでアカウントにパスキーを保存している場合にのみ有効です。

1. アプリケーションが、`POST /passkey/challenge`エンドポイントを呼び出し、ログインチャレンジを開始します。

```bash lines theme={null}
POST /passkey/challenge
Content-Type: application/json

{
  "client_id": "YOUR_CLIENT_ID",
  "realm": "OPTIONAL_CONNECTION"
}
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  `realm`を指定しない場合には、テナントにデフォルトのディレクトリが使用されます。
</Callout>

2. Auth0は、`auth_session`とともに`PublicKeyCredentialRequestOptions`を返します。

```json lines theme={null}
{
  "authn_params_public_key": {
    "challenge": "GENERATED_CHALLENGE_FOR_THIS_SESSION",
    "timeout": 60000,
    "rpId": "YOUR_CUSTOM_DOMAIN",
    "userVerification": "preferred"
  },
  "auth_session": "SESSION_ID"
}
```

3. アプリケーションは、返された`PublicKeyCredentialRequestOptions`を使用して、ユーザーのデバイスからパスキーを取得します。方法はプラットフォームによって異なります。

<Tabs>
  <Tab title="iOS">
    `ASAuthorizationPlatformPublicKeyCredentialProvider`を使用して、Face ID、Touch ID、またはデバイスPINで資格情報を取得します。詳細については、「[iOSでのログインに関するドキュメント](https://developer.apple.com/documentation/authenticationservices/supporting-passkeys#Connect-to-a-service-with-an-existing-account)」をご覧ください。
  </Tab>

  <Tab title="Android">
    `CredentialManager`を使用して、生体認証またデバイスPIN認証で資格情報を取得します。詳細については、「[Androidでのログインに関するドキュメント](https://developer.android.com/identity/passkeys/sign-in-with-passkeys)」をご覧ください。
  </Tab>

  <Tab title="Web">
    Auth0から返された`PublicKeyCredentialRequestOptions`と`navigator.credentials.get()`を使用します。詳細については、「[MDN Web Authentication API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API)」をご覧ください。
  </Tab>
</Tabs>

4. アプリケーションは、ログインプロセスからの資格情報を使用して`POST /oauth/token`エンドポイントを呼び出し、資格情報をトークンと交換します。

```bash lines theme={null}
POST /oauth/token
Content-Type: application/json

{
  "grant_type": "urn:okta:params:oauth:grant-type:webauthn",
  "client_id": "YOUR_CLIENT_ID",
  "realm": "OPTIONAL_CONNECTION",
  "scope": "openid profile email",
  "audience": "YOUR_API_IDENTIFIER",
  "auth_session": "SESSION_ID_FROM_STEP_1",
  "authn_response": {
    "id": "BASE64URL_ID",
    "rawId": "BASE64URL_RAWID",
    "type": "public-key",
    "authenticatorAttachment": "platform",
    "response": {
      "authenticatorData": "BASE64URL_AUTHENTICATORDATA",
      "clientDataJSON": "BASE64URL_CLIENTDATAJSON",
      "signature": "BASE64URL_SIGNATURE",
      "userHandle": "BASE64URL_USERHANDLE"
    },
    "clientExtensionResults": {}
  }
}
```

5. Auth0が、資格情報を認証して要求されたトークンを返します。

```json lines theme={null}
{
  "access_token": "eyJz93a...TJVA95w",
  "refresh_token": "GEz...NaYM",
  "id_token": "eyJ0exA...f1jrv3",
  "token_type": "Bearer",
  "expires_in": 86400
}
```

ログインフローの呼び出しおよびパラメーターについて詳しくは、「[Authentication API Explorer](/api/authentication)」をご覧ください。

### 登録フロー

登録フローでは、ユーザーがユーザー名やパスワードなど別の方法で認証されていると、自分のアカウントにパスキーを追加できます。認証済みの既存ユーザーが新しいパスキーを登録する場合は、[My Account API](/docs/manage-users/my-account-api)を使用します。

<Card title="始める前に">
  登録フローを開始する前に、以下を行います。

  1. テナントでMy Account APIを有効にします
  2. `/me`エンドポイントの`create:me:authentication_methods`スコープを持つアクセストークンを取得します。

  完全なセットアップ手順については、「[My Account API](/docs/manage-users/my-account-api)」をお読みください。
</Card>

1. 認証済みのアプリケーションが、アクセストークンを使用して、`POST /me/v1/authentication-methods`エンドポイントを呼び出します。

```bash lines theme={null}
POST /me/v1/authentication-methods
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

{
  "type": "passkey",
  "connection": "CONNECTION_NAME"
}
```

2. Auth0は、チャレンジおよびセッションIDを返します。

```json lines theme={null}
{
  "authn_params_public_key": {
    "challenge": "GENERATED_CHALLENGE",
    "timeout": 60000,
    "rp": {
      "id": "YOUR_CUSTOM_DOMAIN",
      "name": "YOUR_CUSTOM_DOMAIN"
    },
    "pubKeyCredParams": [
      { "type": "public-key", "alg": -8 },
      { "type": "public-key", "alg": -7 },
      { "type": "public-key", "alg": -257 }
    ],
    "authenticatorSelection": {
      "residentKey": "required",
      "userVerification": "preferred"
    },
    "user": {
      "id": "GENERATED_ID",
      "name": "USER_IDENTIFIER",
      "displayName": "USER_DISPLAY_NAME"
    }
  },
  "auth_session": "SESSION_ID"
}
```

3. アプリケーションが、返された`PublicKeyCredentialCreationOptions`を使用して、サインアップフローと同様のプラットフォーム固有の手順に従って、ユーザーのデバイスにパスキーを作成します。

<Tabs>
  <Tab title="iOS">
    `ASAuthorizationPlatformPublicKeyCredentialProvider`を使用して、Face ID、Touch ID、またはデバイスPINで資格情報を作成します。詳細については、「[iOSでの登録に関するドキュメント](https://developer.apple.com/documentation/authenticationservices/supporting-passkeys#Register-a-new-account-on-a-service)」をご覧ください。
  </Tab>

  <Tab title="Android">
    `CredentialManager`を使用して、生体認証またデバイスPIN認証で資格情報を作成します。詳細については、「[Androidでの登録に関するドキュメント](https://developer.android.com/identity/passkeys/create-passkeys)」をご覧ください。
  </Tab>

  <Tab title="Web">
    Auth0から返された`PublicKeyCredentialCreationOptions`と`navigator.credentials.create()`を使用します。詳細については、「[MDN Web Authentication API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API)」をご覧ください。
  </Tab>
</Tabs>

4. ユーザーがAuthenticatorでパスキーを作成した後、`POST /me/v1/authentication-methods/passkey|new/verify`エンドポイントを呼び出し、登録を完了させます。

```bash lines theme={null}
POST /me/v1/authentication-methods/passkey|new/verify
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

{
  "auth_session": "SESSION_ID_FROM_STEP_1",
  "authn_response": {
    "id": "BASE64URL_ID",
    "rawId": "BASE64URL_RAWID",
    "type": "public-key",
    "authenticatorAttachment": "platform",
    "response": {
      "clientDataJSON": "BASE64URL_CLIENT_DATA_JSON",
      "attestationObject": "BASE64URL_ATTESTATION_OBJECT"
    }
  }
}
```

この手順が正常に完了すると、パスキーはユーザーに登録され、今後の認証で使用できるようになります。

登録フローの呼び出しおよびパラメーターについて詳しくは、「[My Account API Explorer](/api/myaccount)」をご覧ください。

## 証明書利用者ID

使用するアプリケーションの1つで作成されたパスキーは、その他のアプリケーション、ネイティブアプリケーション、またはWebアプリケーションが同一の[証明書利用者ID（`rpId`）](/docs/authenticate/database-connections/passkeys#relying-party-id-for-passkeys)を共有する場合、これらにサインインするために使用できます。この仕組みが機能するのは、パスキープロバイダー（iCloudキーチェーン、Googleパスワードマネージャー、1Password、Dashlaneなど）が同一プロバイダー内にあるユーザーのデバイスにおいて資格情報を同期するからです。

### プラットフォーム間でユーザーを移行する

ほとんどの場合、ユーザーはQRコードを読み取ったり、別のデバイスを使ったりする必要はありません。使用しているデバイスでパスキーがすでに存在するかどうかによって、フローは異なります。

* **同一プロバイダー、異なるデバイス**（最も一般的）：ユーザーがiOSアプリでパスキーを登録すると、iCloudキーチェーンによってパスキーがMacに同期されます。その結果、ユーザーはMac上のWebアプリに即座にサインインできます。同様に、Androidで登録したパスキーは、Googleパスワードマネージャーを通じて、同じGoogleアカウントでサインインしているChromebookやWindows PCのChromeに同期されます。
* **クロスエコシステムまたは共有デバイス**（あまり一般的ではない）：ユーザーが使用中のデバイスでパスキーを利用できない場合（例：iPhoneにあるパスキーをWindows PCで使う、公衆の共有PCを使う）、ブラウザはQRコードによる認証を提示します。これは[ハイブリッドトランスポート（CTAP 2.2）](https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html)を使用して、ユーザーのスマートフォン経由で認証を行う仕組みです。ユーザーは自分のパスキーをスマートフォンに保持したままで、QRコードはその1回のサインインのためだけに、2つのデバイスを橋渡しします。

### 証明書利用者IDを選択する

`rpId`は、パスキーを使用できるオリジンを決定します。Auth0は、デフォルトで`rpId`をカスタムドメインに設定します。パスキーを機能させるスコープに最も適した`rpId`を選択します。それ以上に広げません。

**推奨：**`auth.example.com`や`accounts.example.com`など、認証領域および製品領域にスコープを定義する親ドメインを使用します。\`\`rpId`=auth.example.com`で作成されたパスキーは、`auth.example.com`およびそのサブドメイン（例：`app.auth.example.com`、`m.auth.example.com`）上で機能します。

\*\*eTLD+1（registrable apex）を`rpId`\*\*として使用することは避けます（例：`example.com`）。このレベルで`rpId`を設定すると、`example.com`のすべてのサブドメインが、マーケティングサイト、サードパーティがホストするサービス、または他のチームによって運用されるドメインを含めて、それらのパスキーをリクエスト、使用できてしまいます。これにより、信頼境界が認証領域を大きく超えて広がります。

証明書利用者IDについて詳しくは、「[RP IDの詳細](https://web.dev/articles/webauthn-rp-id)」をお読みください。

### マルチドメインとブランドのシナリオ

複数のブランドドメイン（例：`login.brand1.com`と`login.brand2.com`）を提供する場合、パスキーはそれらを跨いで自動的に機能しません。つまり、ドメインごとに、独自の`rpId`があります。ドメインごとの登録、通信、移行のパターンについては、「[マルチカスタムドメインを使用するパスキー](/docs/customize/custom-domains/multiple-custom-domains/passkeys)」をお読みください。

### 構成チェックリスト

`rpId`を選択したら、すべてのアプリケーションで共有されていることを確認します。

1. パスキーを共有する必要のあるネイティブアプリケーションおよびWebアプリケーションのすべてで、`rpId`としてカスタムドメインを1つ使用します。
2. ネイティブアプリケーションでは、iOSのチームID/App ID、およびAndroidのパッケージ名/SHA-256フィンガープリントを使用して、Auth0 Dashboardで［デバイス設定］を構成します。Auth0は、カスタムドメイン上の`apple-app-site-association`および`assetlinks.json`ファイルを自動的にホストします。
3. Webアプリケーションでは、`rpId`またはそのサブドメインからWebオリジンを提供して、CORSの\*\*［許可するWebオリジン］\*\*に追加します。

## 参考情報

アプリケーションにパスキー認証を実装する際には、以下のリソースを参考にすることができます。

* **Auth0 APIs**
  * [Authentication API](/docs/api/authentication)：パスキー認証のエンドポイントを確認してください。
  * [My Account API](/docs/api/myaccount)：パスキー登録エンドポイントについてお読みください。
  * [My Account APIに関するドキュメント](/docs/manage-users/my-account-api)：アクティベーション、スコープ、およびCORSについて詳細をご覧ください。

* **プラットフォームに関するドキュメント**
  * [Apple Developer：パスキーをサポートする](https://developer.apple.com/documentation/authenticationservices/supporting-passkeys)
  * [Android Developers：パスキーを作成する](https://developer.android.com/identity/passkeys/create-passkeys)
  * [Android Developers：パスキーでログインする](https://developer.android.com/identity/passkeys/sign-in-with-passkeys)
  * [MDN Web Authentication API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API)
  * [WebAuthn仕様](https://www.w3.org/TR/webauthn-3/)

* **追加のリソース**
  * [passkeys.dev](https://passkeys.dev)：包括的なパスキー実装ガイド。
