Skip to main content
クライアント主導のバックチャネル認証 (CIBA) 機能を使用するには、Enterprise プランまたは適切なアドオンが必要です。詳しくは Auth0 Pricing を参照してください。
CIBA でメール通知を使用すると、ユーザーには、ブラウザーで認証またはリクエストの承認を行うためのリンクを含むメールが送信されます。 CIBA でメール通知を使用する場合、ユーザーは利用デバイスでログインしますが、認証の完了は、確認済みのメールアドレスに送信されたリンクをクリックして行います。ユーザーが確認リンクをクリックすると、ブラウザーにリダイレクトされ、Auth0 が認証プロセスを追跡してユーザーの本人確認を行うために使用するセッションが作成されます。このセッションは、認証デバイス (この場合はブラウザー) と、Smart TV などの利用デバイスとの間を橋渡しするために必要です。 次の図は、メール通知を使用したエンドツーエンドの CIBA フローを示しています。
以下のセクションでは、メール通知を使用した CIBA によるユーザー認証の仕組みを、ステップごとに詳しく説明します。

前提条件

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

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

User Search APIs を使用して、CIBA リクエストを開始する対象の認可を行うユーザーを特定し、そのユーザー ID を取得します。 認可を行うユーザーのユーザー ID を取得したら、Authentication API または SDK を使用して、/bc-authorize エンドポイントに CIBA リクエストを送信します。
認可を行うユーザーには、1 分あたり 5 件を超えるリクエストは送信されないというユーザーごとのレート制限があります。

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

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

Step 3: クライアントアプリケーションがレスポンスをポーリングする

Authentication API または SDK を使用して、urn:openid:params:grant-type:ciba グラントタイプと /bc-authorize エンドポイントから受け取った auth_req_id を指定し、/token エンドポイントを呼び出します。
認可を行うユーザーがトランザクションを承認するまで、次のレスポンスが返されます。
ポーリングの待機間隔は約5秒です。短い間隔でポーリングしすぎると、次のレスポンスが返されます。説明はバックオフ間隔によって異なります。
このエラーを解消するには、次のポーリング間隔 (秒) が経過するまで待ってから、/token エンドポイントをポーリングしてください。 Auth0 認可サーバーは、認可を行うユーザーのユーザー ID を含む login_hint を使用して、認証デバイスでユーザー認証を開始します。
  • Auth0 認可サーバーは、ユーザーの確認済みメールアドレスにメールを送信します。
  • メールには、ユーザーが認証のためにクリックする必要がある確認リンクが含まれています。binding_message はリクエストコードとして表示されます。
  • このリンクにより、/bc-verify エンドポイントへのリクエストを通じてユーザーはブラウザーに移動します。ここで、consent クエリパラメータは同意待ちの CIBA リクエストを参照します。
Auth0 がユーザーの確認済みメールアドレスにメールを送信する

ステップ5: ユーザーがブラウザーで認証する

アクティブなセッションが見つからない場合、検証リンクでユーザーに認証が求められます。ユーザーはリンクをクリックして認証を進めます。 認証するには、ユーザーは確認済みのメールアドレスとパスワードを入力します。ユーザーは、クライアントアプリケーションがCIBA リクエストを開始する際に /bc-authorize エンドポイントに送信した login_hint パラメーターで指定された資格情報を使用する必要があります。そうでない場合はエラーメッセージが表示され、ログアウトして再度やり直す必要があります。
ユーザーがブラウザーで認証する
通常のログインフローと同様に、CIBA with email フローでも post-login Actions トリガーが実行されるため、アクセス制御ポリシーを適用したり、追加の MFA 認証要素を求めたりするカスタムロジックを実装できます。CIBA 検証リンクから実行された場合、event.transaction.protocol の値は oidc-ciba-web-link になります。これにより、この種類のログインに対して固有のカスタムルールを適用できます。詳しくは、Login Trigger をご覧ください。 認証が完了すると、ブラウザーに Auth0 Consent API から取得した同意の詳細が表示されます。これには binding_messagescopeaudience が含まれます。スコープは RBAC ポリシーに従ってフィルタリングされます。詳しくは、ロールベースのアクセス制御 をご覧ください。 次のコードサンプルは、Auth0 Consent API からのレスポンス例です。
この時点で、ユーザーは認証リクエストを承認するか拒否するかを選択できます。

ステップ 6: ブラウザーがユーザーの応答を Auth0 に返送する

ブラウザーはユーザーの応答を Auth0 に返送します。ユーザーが認証リクエストを承認するか拒否するかに応じて、Auth0 は次の同意画面を表示します。これらの画面は、同意プロンプトを設定することでカスタマイズする必要があります。

ユーザーが認証リクエストを承認する

ユーザーが認証リクエストを承認する

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

ユーザーが認証リクエストを承認する

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

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

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

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

詳細を見る