クライアント主導のバックチャネル認証 (CIBA) 機能を使用するには、Enterprise プランまたは適切なアドオンが必要です。詳しくは Auth0 Pricing を参照してください。

- 前提条件
- ステップ 1: クライアントアプリケーションが CIBA リクエストを開始する
- ステップ 2: Auth0 テナントが CIBA リクエストを確認する
- ステップ 3: クライアントアプリケーションがレスポンスをポーリングする
- ステップ 4: Auth0 がユーザーのメールアドレスにリンクを送信する
- ステップ 5: ユーザーがブラウザーで認証する
- ステップ 6: ブラウザーがユーザーに同意の詳細を表示する
- ステップ 7: フロー完了後に Auth0 がユーザーの応答を受信する
- ステップ 8: Auth0 がクライアントアプリケーションにアクセストークンを返す
前提条件
- tenant とアプリケーションに対して、クライアント主導のバックチャネル認証を設定します。メール通知の設定も必要です。
requested_expiryパラメーターを 301 ~ 259200 秒 (72 時間) の範囲で設定します。詳しくは、通知チャネルを設定するを参照してください。- CIBA と Rich Authorization Requests (RAR) のメール通知をユーザー認可で使用する場合は、カスタマイズされた同意プロンプトを設定します。
ステップ 1: クライアントアプリケーションが CIBA リクエストを開始する
/bc-authorize エンドポイントに CIBA リクエストを送信します。
- cURL
- C#
- Go
- Java
認可を行うユーザーには、1 分あたり 5 件を超えるリクエストは送信されないというユーザーごとのレート制限があります。
ステップ 2: Auth0 テナントが CIBA リクエストを確認応答する
POST リクエストを正常に受信すると、そのリクエストを参照する auth-req-id を含むレスポンスを受け取るはずです:
auth_req_id の値は、CIBA フローの完了状況をポーリングで確認するために /token エンドポイントに渡されます。
Step 3: クライアントアプリケーションがレスポンスをポーリングする
urn:openid:params:grant-type:ciba グラントタイプと /bc-authorize エンドポイントから受け取った auth_req_id を指定し、/token エンドポイントを呼び出します。
- cURL
- C#
- Go
- Java
/token エンドポイントをポーリングしてください。
ステップ 4: Auth0 がユーザーのメールアドレスにリンクを送信する
login_hint を使用して、認証デバイスでユーザー認証を開始します。
- Auth0 認可サーバーは、ユーザーの確認済みメールアドレスにメールを送信します。
- メールには、ユーザーが認証のためにクリックする必要がある確認リンクが含まれています。
binding_messageはリクエストコードとして表示されます。 - このリンクにより、
/bc-verifyエンドポイントへのリクエストを通じてユーザーはブラウザーに移動します。ここで、consentクエリパラメータは同意待ちの CIBA リクエストを参照します。

ステップ5: ユーザーがブラウザーで認証する
CIBA リクエストを開始する際に /bc-authorize エンドポイントに送信した login_hint パラメーターで指定された資格情報を使用する必要があります。そうでない場合はエラーメッセージが表示され、ログアウトして再度やり直す必要があります。

post-login Actions トリガーが実行されるため、アクセス制御ポリシーを適用したり、追加の MFA 認証要素を求めたりするカスタムロジックを実装できます。CIBA 検証リンクから実行された場合、event.transaction.protocol の値は oidc-ciba-web-link になります。これにより、この種類のログインに対して固有のカスタムルールを適用できます。詳しくは、Login Trigger をご覧ください。
認証が完了すると、ブラウザーに Auth0 Consent API から取得した同意の詳細が表示されます。これには binding_message、scope、audience が含まれます。スコープは RBAC ポリシーに従ってフィルタリングされます。詳しくは、ロールベースのアクセス制御 をご覧ください。
次のコードサンプルは、Auth0 Consent API からのレスポンス例です。
ステップ 6: ブラウザーがユーザーの応答を Auth0 に返送する
ユーザーが認証リクエストを承認する

ユーザーが認証リクエストを拒否した場合

ステップ 7: フロー完了後、Auth0 がユーザーの応答を受け取る
/token エンドポイントからの応答を受け取ると、ポーリングを終了します。CIBAフローでは、認可を行うユーザーからの応答 (承認または拒否) が常に必要であり、既存のグラントは確認されません。
ステップ 8: Auth0 がクライアントアプリケーションにアクセストークンを返す
refresh_token が含まれるのは、最初の /bc-authorize リクエストに offline_access スコープが含まれていた場合のみです。