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

# ユーザーに代わってサードパーティ API を呼び出す

> Token Vault を使用して、AI agent がユーザーに代わってサードパーティ API を呼び出せるようにします。

サードパーティ API とは、Google、Slack、GitHub などの外部組織が所有・運用する API です。

ユーザーは [Token Vault](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/token-vault.md) を使用して、AI agent が自分に代わってサードパーティ API にアクセスする権限を付与できます。ユーザーが外部プロバイダーと接続してアクセスを認可すると、Auth0 はそのプロバイダーのトークンを Token Vault に保存します。エージェントはその後トークン交換を行い、ユーザーが付与した権限の範囲にスコープが限定された外部アクセストークンを取得します。

## 仕組み

Token Vault は、アプリケーションの種類に応じて、以下のトークン交換パターンをサポートしています。

### リフレッシュトークン交換

Web、モバイル、ネイティブアプリケーションなど、アプリケーションが Auth0 のリフレッシュトークンを取得できる場合は、リフレッシュトークン交換を使用します。これにより、ユーザーがアプリケーションを操作していないときでも、エージェントが外部 API を呼び出せるようになります。

![リフレッシュトークンを使用した Token Vault](https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/ai/authentication_for_users_of_ai_applications_diagram_light.png)

リフレッシュトークンを使用した Token Vault

**1. ユーザーが外部プロバイダーを接続する**

ユーザーはログインし、[Connected Accounts フロー](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/token-vault/connected-accounts-for-token-vault.md)を通じて外部プロバイダー (Google など) へのアクセスを認可します。Auth0 はプロバイダーのアクセストークンとリフレッシュトークンを Token Vault に保存します。

**2. エージェントが外部アクセストークンをリクエストする**

外部 API を呼び出す必要が生じると、エージェントはリフレッシュトークン交換を実行します。具体的には、Auth0 のリフレッシュトークンを `/oauth/token` エンドポイントに渡し、Token Vault から外部プロバイダーのアクセストークンを取得します。

**3. Token Vault が外部アクセストークンを返す**

Auth0 はリフレッシュトークンを検証し、保存されている外部トークンを特定したうえで、外部プロバイダーのアクセストークンをエージェントに返します。

**4. エージェントが外部 API を呼び出す**

エージェントは外部アクセストークンを使ってユーザーの代わりにサードパーティ API を呼び出し、そのレスポンスをユーザーに返します。

アプリケーションで [Organizations](https://auth0.com/docs/ja-jp/manage-users/organizations.md) を使用している場合は、連携済みアカウントを通じて外部プロバイダーを認可する前に、対象の Organization でユーザーを認証してください。Organizations によってセッションのコンテキストが決まりますが、Token Vault がトークンを交換する対象は、あくまでサインインしている個々のユーザーです。

### アクセストークン交換

シングルページアプリケーション (SPA) やヘッドレスエージェント、CLI など、アプリケーションがリフレッシュトークンを取得できない場合は、アクセストークン交換を使用します。バックエンド API は、自身に紐づけられたカスタム API クライアントを使ってトークン交換を実行します。

![アクセストークンを使用する Token Vault](https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/ai/web_applications_with_spa_diagram_light.png)

アクセストークンを使用する Token Vault

**1. ユーザーが外部プロバイダーを接続する**

ユーザーはログインし、[Connected Accounts フロー](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/token-vault/connected-accounts-for-token-vault.md)を通じて外部プロバイダーへのアクセスを認可します。Auth0 はプロバイダーのトークンを Token Vault に保存します。

**2. SPA が Auth0 アクセストークンを使ってバックエンド API を呼び出す**

SPA はバックエンド API を呼び出す際、`Authorization` ヘッダーに Auth0 アクセストークンを含めて渡します。バックエンドは、トークンの署名、発行者、オーディエンス、有効期限、スコープを検証します。

**3. バックエンドがアクセストークン交換を実行する**

バックエンドは、バックエンド API と同じ識別子で構成されたカスタム API クライアントを使用し、`/oauth/token` エンドポイント経由で Auth0 アクセストークンを外部プロバイダーのアクセストークンと交換します。

**4. Token Vault が外部アクセストークンを返す**

Auth0 はリクエストを検証し、保存済みの外部トークンを特定したうえで、外部プロバイダーのアクセストークンをバックエンドに返します。

**5. エージェントが外部 API を呼び出す**

バックエンドは外部アクセストークンを使ってユーザーに代わりサードパーティ API を呼び出し、そのレスポンスをユーザーに返します。

## 接続

Auth0は、Google、GitHub、Slackなど、一般的なソーシャルおよびエンタープライズの外部プロバイダーをサポートしています。ユーザーがログインして外部プロバイダーへのアクセスを認可すると、そのアカウントはToken Vault接続としてAuth0に追加されます。

Token Vaultを使用すると、AI agentは承認された接続を通じて外部 (サードパーティ) APIに安全にアクセスし、ユーザーに代わって次のようなタスクを実行できます。

* ユーザーのGoogleカレンダーを読み取り、会議の予定を設定する。
* ユーザーのMicrosoftドキュメントにアクセスし、内容を要約する。
* SalesforceなどのCRMに接続し、顧客情報を取得する。

> [card] [すべての接続を表示](https://auth0.com/ai/docs/ja-jp/connections/overview)

## はじめに

AI agent で Token Vault を使い始めるには、次のリソースを参照してください。

### クイックスタート

> [card] [ユーザーに代わってサードパーティ API を呼び出す](https://auth0.com/ai/docs/ja-jp/get-started/call-third-party-apis-on-users-behalf.md)

### ガイド

> [card] [Google Calendar の空き状況を確認する](https://auth0.com/ai/docs/ja-jp/how-tos/check-google-calendar-availability.md)

> [card] [GitHub リポジトリの一覧を取得する](https://auth0.com/ai/docs/ja-jp/how-tos/list-github-repositories.md)

> [card] [Slack チャンネルの一覧を取得する](https://auth0.com/ai/docs/ja-jp/how-tos/list-slack-channels.md)

> [card] [Salesforce の商談を取得する](https://auth0.com/ai/docs/ja-jp/how-tos/get-salesforce-opportunities.md)

### サンプルアプリ

> [card] [Assistant0: Next.js + LangGraph](https://github.com/auth0-samples/auth0-assistant0/tree/main/ts-langchain)

> [card] [Assistant0: Next.js + Vercel AI SDK](https://github.com/auth0-samples/auth0-assistant0/tree/main/ts-vercel-ai)

> [card] [Assistant0: FastAPI + LangGraph](https://github.com/auth0-samples/auth0-assistant0/tree/main/py-langchain)

> [card] [Assistant0: Next.js + LlamaIndex](https://github.com/auth0-samples/auth0-assistant0/tree/main/ts-llamaindex)

> [card] [Assistant0: FastAPI + LlamaIndex](https://github.com/auth0-samples/auth0-assistant0/tree/main/py-llamaindex)

> [card] [Auth0 AI SDK TypeScript サンプル](https://github.com/auth0/auth0-ai-js/tree/main/examples/calling-apis)

> [card] [Auth0 AI SDK Python サンプル](https://github.com/auth0/auth0-ai-python/tree/main/examples/calling-apis)

## 詳細情報

> [card] [Token Vaultを構成する](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/token-vault/configure-token-vault.md)

> [card] [Token Vaultを使用したリフレッシュトークン交換](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/token-vault/refresh-token-exchange-with-token-vault.md)

> [card] [Token Vaultを使用したアクセストークン交換](https://auth0.com/docs/ja-jp/secure/call-apis-on-users-behalf/token-vault/access-token-exchange-with-token-vault.md)
