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

# 非同期認可

> CIBAを使用して、ユーザーの現在のセッションを中断することなく、AI agentがプッシュ通知、SMS、またはメールで機密性の高い操作に対するユーザーの同意をリクエストできるようにします。

Auth0の非同期認可は、AI agentに対して、人間が判断に関与する (ヒューマン・イン・ザ・ループ) 安全な仕組みを提供します。AI agentはバックグラウンドで自律的に動作し、機密性の高い操作や重要な操作を行う場合にのみ、ユーザーに同意を求めます。

このプロセスでは[クライアント起点のバックチャネル認証 (CIBA) ](/docs/ja-jp/get-started/authentication-and-authorization-flow/client-initiated-backchannel-authentication-flow/user-authorization-with-ciba)を使用します。CIBAは分離型の認証フローで、ユーザーはエージェントを最初に利用したデバイスとは別の、携帯電話などの信頼できるデバイスで同意します。

[B2B向けAI Identityによる非同期認可](https://play.vidyard.com/tHw62YdhKaUCRrmLheT1dE.html)

## ユースケース

AI agentは、長時間かかる処理や後で実行される処理、機密性の高いオペレーションを伴う処理を行う必要があることがよくあります。たとえば、次のような場合です。

* 取引の承認：出張を手配するエージェントは、航空券とホテルを見つけることはできても、購入を完了するにはユーザーの最終承認が必要です。
* 機密データへのアクセス：エージェントが問い合わせに回答するために、保護されたユーザーの健康記録にアクセスしなければならない場合があります。
* 高い権限を要するタスクの実行：DevOpsエージェントが、アプリケーションの新しいバージョンを本番環境に導入する権限を必要とする場合があります。

非同期認可を使用すると、エージェントがこのリクエストを開始し、ユーザーは都合のよいタイミングで承認できるため、よりシームレスで安全なユーザー体験を実現できます。
この分離型の仕組みは、チャットボットでの株式購入の承認や、銀行エージェントを介した金融取引の完了など、人間が介在するやり取り (ヒューマン・イン・ザ・ループ) にも最適です。

## 仕組み

Auth0は、クライアント起点のバックチャネル認証 (CIBA) とリッチ認可リクエスト (RAR) を組み合わせて非同期認可を実現しています。

* [CIBA](https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html)はOpenID Foundationの仕様で、クライアントアプリケーション (AI agentのバックエンドなど) が、同じデバイス上でのユーザーの直接操作なしに認証リクエストを開始できる分離型のフローを定義しています。ユーザーは、別の信頼できる認証デバイス (携帯電話など) で、通常はAuthenticatorアプリへのプッシュ通知、SMS、またはメールを通じてリクエストを承認または拒否します。
* [RAR](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-rar)はOAuth 2.0の拡張仕様で、クライアントアプリケーションが認可リクエストの中で、標準的なOAuth 2.0のスコープでは表現できない、より複雑な権限を要求できるようにします。これにより、エージェントは取引内容を正確に記述した、詳細で構造化されたペイロードを送信できます。その結果、ユーザーには汎用的なプロンプトではなく、「ExampleCorpへの\$50.00の支払いを承認する」といった具体的で検証可能なコンテキストが提示されます。これは、ユーザーの信頼とセキュリティを確保するうえで欠かせません。なお、CIBAフローでRARを使用するかどうかは任意です。

CIBAフローは次の手順で進みます。

**1. 開始**

エージェントのバックエンドは、ユーザーの承認が必要だと判断すると、Auth0の`/bc-authorize`
エンドポイントにCIBAリクエストを送信します。このリクエストには、ユーザー
識別子と、 (`authorization_details`) パラメーターで指定する任意のRARペイロードが
含まれます。

**2. 受領確認**

Auth0は一意の`auth_req_id`を返し、リクエストを受け付けたことを
直ちに通知します。

**3. ポーリング**

エージェントのバックエンドは`auth_req_id`を使ってAuth0の`/token`
エンドポイントへのポーリングを開始し、処理が完了したかどうかを確認します。

**4. ユーザーの同意**

これと並行して、Auth0はユーザーの認証デバイスに通知 (プッシュ、SMS、メールなど) を送信し、
RARペイロードに含まれる詳細なコンテキストを表示します。ユーザーは
リクエストを承認または拒否します。

**5. トークンの発行**

ユーザーが承認すると、エージェントのバックエンドから`/token`エンドポイントへの
次のポーリングリクエストが成功します。Auth0は必要なアクセストークンとIDトークンを
返し、エージェントは認可されたアクションを実行できるようになります。

## ユーザーの同意と通知チャネルの選択

Auth0はバックチャネルリクエストを受け取ると、ユーザーに承認を求める際にどの通知チャネルを使用するかを決定する必要があります。現在利用できるオプションは次のとおりです (優先度の高い順) ：

1. Auth0 Guardianのモバイルプッシュ通知：ユーザーの登録済みモバイルデバイスにモバイルプッシュ通知を送信します。認証と認可は、通知を受信したデバイス上で行われます。
2. メール：ユーザーの検証済みアドレスにメールを送信します。メールにはリンクが記載されており、ユーザーがそのリンクを選択すると、ブラウザー上で認証と認可が行われます。

Auth0はデフォルトでCIBAフローにGuardianのプッシュ通知を使用しており、これを推奨しています。Guardianのプッシュ通知は、フィッシング攻撃を受けるおそれのあるメールなどの他のチャネルよりも安全です。CIBAフローでメール通知を使用するには、明示的に有効化する必要があります。

非同期認可のメール通知は有料のアドオン機能で、現在、Essentials、Professional、Enterpriseのすべてのプランで利用できます。詳細については、[価格](https://auth0.com/pricing)ページをご覧ください。

CIBA通知の詳細については、「[クライアント起点のバックチャネル認証を構成する](/docs/ja-jp/get-started/applications/configure-client-initiated-backchannel-authentication)」をお読みください。

## はじめに

AI agentで非同期認可を利用するには、以下のリソースを参照してください。

### クイックスタート

> **[非同期認可](/ai/docs/ja-jp/get-started/asynchronous-authorization)**

### ガイド

> **[リッチ認可リクエスト（RAR）の設定](/docs/ja-jp/get-started/apis/configure-rich-authorization-requests)**

### サンプルアプリ

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

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

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

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

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

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

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

### さらに詳しく

> **[クライアント起点のバックチャネル認証フロー](/docs/ja-jp/get-started/authentication-and-authorization-flow/client-initiated-backchannel-authentication-flow)**

> **[CIBAによるユーザー認可](/docs/ja-jp/get-started/authentication-and-authorization-flow/client-initiated-backchannel-authentication-flow/user-authorization-with-ciba)**
