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

# 標準のアカウントリンクをセットアップする

> パブリッククライアントまたは機密クライアントで認可コードフローを使用し、Gemini などのエージェントプラットフォームから買い物客が加盟店アカウントをリンクまたは作成できるようにします。

> [!WARNING]
>
> **Auth for UCP機能は[早期アクセス](https://auth0.com/docs/ja-jp/troubleshoot/product-lifecycle/product-release-stages.md)段階にあります。**
>
> この機能を使用することで、OktaのMaster Subscription Agreementにおける該当の無料トライアル条件に同意したものとみなされます。参加をご希望の場合は、[Limited Early Access Partnership Programフォーム](https://forms.gle/7qjaSh4ZQSqrysf27)にご記入のうえ、関心をお知らせください。

標準のアカウントリンクは、Geminiなどのエージェントプラットフォームにおける買い物客のセッションを、貴社サイト上のアカウントに結び付けます。買い物客はAuth0の[ユニバーサルログイン](https://auth0.com/docs/ja-jp/authenticate/login/auth0-universal-login/universal-login-vs-classic-login/universal-experience.md)からマーチャントプラットフォームにサインイン (またはアカウントを作成) し、エージェントが要求するアクセスを承認します。

その後、Auth0はその買い物客用のアクセストークンをエージェントプラットフォームに発行します。エージェントは、買い物客を貴社のAuth0テナントへリダイレクトする前に、UCPスコープをもとに構成した同意画面を表示します。標準のアカウントリンクは認可コードフローを使用し、パブリッククライアントと機密クライアントの両方に対応しています。パブリッククライアントは[PKCEを使用した認可コードフロー](https://auth0.com/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce.md)を使用し、機密クライアントはクライアント認証情報を使って認証します。UCP固有のトークンエンドポイントの動作は必要ありません。

## 前提条件

* [UCPリソースサーバーを構成](https://auth0.com/docs/ja-jp/ai-agents-mcp/auth-for-ucp/configure-ucp-resource-server.md)し、UCPスコープを追加します。
* UCPリソースサーバーをテナントのデフォルトオーディエンスに設定します。
* 買い物客のアカウントを管理する接続を新規作成するか、既存の接続を使用します。使用できるのは、Auth0の[データベース接続](https://auth0.com/docs/ja-jp/authenticate/database-connections)、または既存のIDプロバイダーへの[エンタープライズ接続](https://auth0.com/docs/ja-jp/authenticate/enterprise-connections)です。エージェントプラットフォームがサードパーティ製アプリケーションの場合は、[接続をドメインレベルに昇格](https://auth0.com/docs/ja-jp/get-started/applications/third-party-applications/configure-third-party-applications.md#configure-connections)する必要があります。

## エージェントプラットフォームを登録する

エージェントプラットフォームを、Auth0のアプリケーションとしてモデル化します。ファーストパーティとサードパーティ製アプリケーションのどちらでも構いません。手動で作成するか、エージェントプラットフォームが対応している場合は、その[Client ID Metadata Document (CIMD) ](https://auth0.com/docs/ja-jp/get-started/auth0-overview/create-applications/register-applications-with-cimd.md)を使って作成します。

1. **\[Dashboard] > \[アプリケーション] > \[アプリケーション]** に移動し、**\[Create Application]** を選択します。
2. エージェントプラットフォームのクライアントの種類に合ったアプリケーションの種類を選択します。機密クライアントの場合は **\[Regular Web Application]** を、パブリッククライアントの場合は **\[Native]** または **\[Single Page Web Application]** を選択します。リダイレクトURIにはエージェントプラットフォームから提供されたものを使用し、機密クライアントの場合は、提供されたクライアント認証情報も使用します。
3. Geminiなど、自社が所有していないエージェントプラットフォームの場合は、サードパーティ製アプリケーションを作成します。**\[This application is owned by a third party. Enable stricter セキュリティ対策]** をオンにします。Management APIを使用する場合は、`is_first_party` を `false` に設定し、`third_party_security_mode: strict` を指定します。

サードパーティ製アプリケーションを登録すると、より厳格なセキュリティ対策が適用されるため、追加の設定が必要です。CIMDを使用して登録したアプリケーションは、自動的にstrictモードのサードパーティ製アプリケーションになります。詳しくは、[サードパーティアプリケーションを構成する](https://auth0.com/docs/ja-jp/get-started/applications/third-party-applications/configure-third-party-applications.md)を参照してください。

## エージェントプラットフォームにUCPサーバーの呼び出しを認可する

アプリケーションとUCPリソースサーバーの間に[クライアントへの認可](https://auth0.com/docs/ja-jp/get-started/apis/api-access-policies-for-applications.md)を作成し、公開したいUCPスコープを付与します。

1. **\[Dashboard] > \[アプリケーション] > \[APIs]** に移動し、UCPリソースサーバーを選択します。
2. **\[Application Access]** タブを選択します。
3. エージェントプラットフォームのアプリケーションを探して認可し、付与するスコープを選択します。

サードパーティ製アプリケーションの場合、買い物客はユニバーサルログイン時に表示される通常のエンドユーザー向け同意プロンプトでアクセスを承認します。ファーストパーティアプリケーションでは[同意プロンプトはスキップされます](https://auth0.com/docs/ja-jp/get-started/applications/third-party-applications/user-consent-and-third-party-applications.md#skip-consent-for-first-party-applications)。

## 認可コードフロー

1. エージェントプラットフォームが `scopes_supported` メタデータを読み取り、独自の同意画面を表示します。
2. エージェントプラットフォームは、`scope` パラメーターを付けて、買い物客をテナントの `/authorize` エンドポイントにリダイレクトします。パブリッククライアントの場合は、PKCEコードチャレンジも送信します。
3. 買い物客はユニバーサルログインでサインインまたはサインアップします。サードパーティ製アプリケーションの場合は、同意画面でアクセスを承認します。
4. Auth0が認可コードを付けてリダイレクトします。
5. エージェントプラットフォームは `/oauth/token` でコードをアクセストークンと交換します。機密クライアントはクライアント認証情報を使って認証し、パブリッククライアントはPKCEコードベリファイアを送信します。

これで、買い物客のエージェントプラットフォームのセッションがサイト上のアカウントと紐づけられ、エージェントはUCPサーバーを呼び出す際に、その買い物客に代わって操作できるようになります。エージェントプラットフォームは `audience` パラメーターを送信しないため、Auth0はテナントのデフォルトオーディエンス向けにトークンを発行します。

## UCPサーバーを使用してファーストパーティAPIを呼び出す

コマース機能を提供するAPIがすでにあり、それを操作する新しい手段としてUCPを追加する場合は、Auth0でそれぞれを別個のリソースサーバーとしてモデル化します。

* UCPリソースサーバー：エージェントプラットフォームが、認可フローで取得したアクセストークンを使用して呼び出します。
* 既存のAPI：UCPサーバーが購入者に代わって呼び出します。

UCPサーバーは、[On-Behalf-Of (OBO) トークン交換](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/on-behalf-of-token-exchange.md)を使用して、購入者のUCPアクセストークンを既存のAPI向けにスコープされたトークンと交換します。新しいトークンでもサブジェクトは購入者のままとなるため、APIはどの購入者のリクエストであるかを把握できます。また、UCPサーバーはアクターとして`act`クレームに記録されます。

### OBO token exchange を設定する

標準の OBO 設定手順に従い、受信トークンのオーディエンスには UCP リソースサーバーを指定します。

1. UCP リソースサーバーに紐づく[カスタム API クライアントを作成](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/on-behalf-of-token-exchange.md#create-custom-api-client)します。`resource_server_identifier` には UCP リソースサーバーの識別子を設定します。
2. カスタム API クライアントで [On-Behalf-Of トークン交換を有効化](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/on-behalf-of-token-exchange.md#configure-the-obo-token-exchange)します。
3. カスタム API クライアントと既存の API の間に[ユーザー委任型のクライアントへの認可を作成](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/on-behalf-of-token-exchange.md#create-client-grant)し、UCP サーバーに必要なスコープを付与します。

### 買い物客のトークンを交換する

UCPサーバーがリクエストを受信したら、アクセストークンを検証してから、既存のAPI用のトークンと交換します。`/oauth/token`エンドポイントに`POST`リクエストを送信してください。

```bash theme={null}
curl --request POST \
  --url 'https://YOUR_AUTH0_DOMAIN/oauth/token' \
  --header 'Content-Type: application/json' \
  --data '{
    "grant_type": "urn:ietf:params:oauth:grant-type:token-exchange",
    "client_id": "YOUR_CUSTOM_API_CLIENT_ID",
    "client_secret": "YOUR_CUSTOM_API_CLIENT_SECRET",
    "subject_token": "UCP_ACCESS_TOKEN",
    "subject_token_type": "urn:ietf:params:oauth:token-type:access_token",
    "requested_token_type": "urn:ietf:params:oauth:token-type:access_token",
    "audience": "https://api.acme.example.com"
  }'
```

`audience` には既存のAPIの識別子を設定します。詳細については、「[OBO token exchangeを実行する](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/on-behalf-of-token-exchange.md#perform-obo-token-exchange)」をお読みください。

リクエストのたびにトークン交換を行うのではなく、交換済みのトークンを有効期限が切れるまでキャッシュしてください。

## 次のステップ

* [スコープ検出メタデータ](https://auth0.com/docs/ja-jp/ai-agents-mcp/auth-for-ucp/scope-discovery-metadata.md)
* [On-Behalf-Ofトークン交換](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/on-behalf-of-token-exchange.md)
