CIBA Backchannel Authentication — Ping Mode

認証完了時にOpenID ProviderがClientへauth_req_idだけを通知し、ClientがToken Endpointから結果を取得するCIBAフローです。

Notificationauth_req_id only
Token retrievalToken Endpoint
ProtectionNotification token

このフローで、
何をするの?

このフローのゴール

操作中の端末へパスワードを入力せず、手元のスマートフォンなど別の端末で本人確認します。

01まず全体像

ClientがOpenID Providerへ直接、ユーザーの認証を依頼します。OpenID Providerは手元の認証端末へ通知し、ユーザーが内容を確認して承認します。認証が終わるとOpenID ProviderがClientへ完了だけを通知し、Clientがトークンを取得します。ブラウザのリダイレクトは使いません。

02身近な例で考える

店舗で手続きを始めると、銀行アプリへ確認通知が届き、スマートフォンで承認するイメージです。店舗端末へ銀行のパスワードを入力する必要はありません。

03最後にどうなる?

承認が完了するとClientはID TokenとAccess Tokenを受け取り、最初に始めた取引やログインを完了できます。

登場人物

図では、縦の列ごとに担当者やシステムを分けています。

U
User

サービスを利用する人です。ログインや同意、端末の操作を行います。

C
Consumption

認証を必要とする処理を開始する端末やサービスです。ユーザーの認証情報は受け取りません。

A
Auth Device

ユーザーが管理するスマートフォンなどです。要求内容を表示し、本人確認と承認を行います。

O
OpenID Provider

Clientからのバックチャネル要求を受け、認証端末とのやり取りとトークン発行を担当します。

図の読み方: 光る丸が今説明している通信です。自動再生を止めたいときは「Pause」を押し、気になる矢印を選んでください。

Interactive sequence
UUserEnd User
CConsumptionClient / Service Device
AAuth DeviceUser-controlled Device
OOpenID ProviderCIBA-enabled OP
01

User Consumption

処理を開始

このステップで行うこと

ユーザーがConsumption Deviceで認証を必要とする処理を始めます。

なぜ必要?

Consumption Deviceへ認証情報を入力させません。

このあと

次は「Backchannel認証を要求」へ進みます。

REQUEST / RESPONSE EXAMPLEConsumption Device → Client
REQUEST
POST /payments/confirm
Content-Type: application/json
Accept: application/json

{ "user_hint": "user@example.com", "amount": 1200 }
レスポンス
HTTP/1.1 202 Accepted
Content-Type: application/json
Accept: application/json

{ "status": "authentication_pending" }

※ トークン、challenge、Credential IDなどは説明用に短縮したサンプル値です。

同じ仕様のフローを、続けて理解する。