Skip to main content
クライアント主導のバックチャネル認証 (CIBA) 機能を使用するには、Enterprise プランまたは適切なアドオンが必要です。詳しくは Auth0 Pricing を参照してください。
クライアント主導のバックチャネル認証 (CIBA) は、クライアントアプリケーションが、開始元のアプリケーションでユーザーの直接的な操作を必要とせずに、認証および/または を開始できるようにする の仕様です。Rich Authorization Requests (RAR) は OAuth 2.0 の拡張機能であり、クライアントアプリケーションが認可リクエストで標準の OAuth 2.0 スコープを超える、より複雑な権限をリクエストできるようにします。 CIBA と RAR を組み合わせることで、バックチャネルリクエストで データを に渡せます。authorization_details パラメーターにはリクエストの詳細が含まれており、その内容はユーザーに表示する同意プロンプトでカスタマイズできます。 CIBA では、次の通知チャネルを使用してユーザーを認可できます。

一般的なユースケース

よりきめ細かなリソースアクセス制御が必要なユースケースでは、RAR を CIBA フローと組み合わせて使用します。一般的なユースケースには、次のようなものがあります。
  1. 支払いアプリが、送金の確認をユーザーに求めます。authorization_details は、トランザクションの詳細を表示するようにカスタマイズできます。
  2. AI エージェントが、予約変更された診察の詳細をユーザーに提示します。authorization_details は、新しい日時を表示するようにカスタマイズできます。

仕組み

CIBA を使用したユーザー認可フローは、CIBA を使用したユーザー認証フローと似ており、RAR をサポートしているため、クライアントは /bc-authorize エンドポイントを介して authorization_details を認可サーバーに渡すことができます。 次のシーケンス図は、CIBA を使用したユーザー認可フローのエンドツーエンドの流れを示しています。
以下のセクションでは、CIBA におけるユーザー認可の仕組みを順を追って説明します。

前提条件

Auth0 を使用して CIBA リクエストを開始するには、次の設定が必要です。

ステップ 1: クライアント アプリケーションが CIBA リクエストを開始する

User Search APIs を使用して、CIBA リクエストを開始する対象の認可を行うユーザーを特定し、そのユーザー ID を取得します。 認可を行うユーザーのユーザー ID を取得したら、Authentication API を使用して、authorization_details を含む CIBA リクエストを /bc-authorize エンドポイントに送信します。

ステップ 2: Auth0 テナントが CIBA リクエストの受信を確認する

Auth0 テナントが POST リクエストを正常に受信すると、そのリクエストを参照する auth-req-id を含むレスポンスが返されます:
auth_req_id の値は、CIBAフローの完了を確認するために /token エンドポイントに渡されます。

ステップ 3: クライアントアプリケーションが応答をポーリングする

Authentication API を使用して、urn:openid:params:grant-type:ciba グラントタイプと /bc-authorize エンドポイントから受け取った auth_req_id を指定し、/token エンドポイントを呼び出します。
認可を行うユーザーがトランザクションを承認するまでは、次のレスポンスが返されます。
ポーリングの待機間隔は約5秒です。短い間隔でポーリングしすぎると、以下のレスポンスが返されます。説明はバックオフ間隔によって異なります。
エラーを解消するには、次回 /token エンドポイントをポーリングできるまでの間隔 (秒) が経過するのを待ってください。

ステップ4: 認証デバイスが通知を受信する

通知チャネルに応じて、Auth0 は認証デバイスに通知を送信します。
  • モバイルプッシュ通知: Auth0 は、Auth0 Guardian アプリまたは Auth0 Guardian SDK を組み込んだカスタムモバイルアプリに通知を送信します。
  • メール通知: Auth0 は、ユーザーの確認済みメールアドレスに通知を送信します。
認証デバイスは、Auth0 Consent API から同意の詳細、つまり binding_message の内容を取得します。
  • Mobile push notification: Auth0 Guardian アプリ、または Auth0 Guardian SDK を組み込んだカスタムアプリが Auth0 Consent API を呼び出し、同意の詳細を取得します。
  • Email notification: ユーザーが確認リンクをクリックするとブラウザーにリダイレクトされ、そのブラウザーが Auth0 Consent API から同意の詳細を取得します。
Auth0 Consent API は、認証デバイスに同意の詳細を返します。これには、設定されている場合、binding_messagescopeaudienceauthorization_details が含まれます。モバイルアプリケーションに返されるスコープは、RBAC ポリシーに従ってフィルタリングされます。詳しくは、ロールベースのアクセス制御を参照してください。 次のコードサンプルは、Auth0 Consent API からのレスポンスの例です。
認証デバイスは、authorization_details とともに同意の詳細をユーザーに表示します。 この時点で、ユーザーは認可リクエストを承認するか拒否できます。

Step 7: 認証デバイスがユーザーの応答を Auth0 に返送する

ユーザーが認可リクエストを承諾または拒否すると、認証デバイスはその応答を Auth0 に返送します。
  • モバイルプッシュ通知: Auth0 Guardian アプリ、または Auth0 Guardian SDK を統合したカスタムアプリケーションが、ユーザーの応答を Auth0 に返送します。
  • メール通知: ブラウザーがユーザーの応答を Auth0 に返送します。

ステップ 8: フローの完了後、Auth0 がユーザーの応答を受け取る

クライアントアプリケーションは、/token エンドポイントから応答を受け取ると、ポーリングを完了します。CIBAフローでは、認可を行うユーザーによる承認または拒否のいずれかの応答が常に必要であり、既存のグラントは確認されません。つまり、Auth0 はすべての CIBA リクエストを、認可を行うユーザーに対する新たな認可として扱います。

ステップ 9: Auth0 がクライアントアプリケーションにアクセストークンを返す

ユーザーがプッシュリクエストを拒否した場合、Auth0 はクライアントアプリケーションに次のようなエラーレスポンスを返します。
ユーザーがプッシュリクエストを承認すると、Auth0 は次のような authorization_details を含む をクライアントアプリケーションに返します。
refresh_token が含まれるのは、最初の /bc-authorize リクエストに offline_access スコープが含まれていた場合のみです。

authorization_details を照会する

コンパイル時には、JSON を動的に照会するのと同じように、authorization_details の型やオブジェクトを同意の詳細から厳密な型で照会できます。
オブジェクトを表すカスタム型を定義している場合は、filterAuthorizationDetailsByType() 関数を使用して、目的の型に一致する authorization_details オブジェクトをすべて返せます。 次のコードサンプルでは、payment 型の authorization_details を照会しています。
filterAuthorizationDetailsByType() は、指定した authorization_details 型に一致するオブジェクトのみを返します。そのため、モバイル アプリケーションでは、リクエストの内容をユーザーが完全に理解できるよう、型に関係なく関連するすべての authorization_details を同意のために提示する必要があります AI エージェントまたはアプリケーションが応答を取得するために /oauth/token エンドポイントをポーリングするときにも、authorization_details を照会できます。
認可を行うユーザーがリクエストを承認すると、Auth0 はユーザーの応答を受け取り、CIBA フローが完了して、アクセストークンと authorization_details 配列が返されます。

制限事項

Auth0 は以下をサポートしていません。
  • CIBAフローで Actions 内の RAR を変更すること。
  • クライアントが検出できるように RAR タイプを公開すること。つまり、クライアントが送信できる authorization_details のタイプを事前に登録しておく必要があります。
  • API で許可されているタイプに一致する type プロパティを持っているかどうかの確認を超えて、RAR オブジェクトを検証すること。authorization_details 内の内容をきめ細かく検証する責任は、リソースサーバーにあります。詳しくは、RARを構成 を参照してください。

詳しく見る