端末を分離する
処理を始めるConsumption Deviceを信頼しすぎず、ユーザー管理下のAuthentication Deviceで本人確認します。
Specification
ClientからOpenID Providerへバックチャネルで認証を開始し、ユーザーが別のAuthentication Deviceで本人確認・承認する非同期認証フローを定義します。
Overview
CIBAは、ClientがユーザーのブラウザをAuthorization Serverへリダイレクトせず、バックチャネルから認証を開始するOpenID Connectフローです。ユーザーが操作中のConsumption Deviceと、本人確認するAuthentication Deviceを分離できます。
たとえば店舗端末で支払いを始め、手元の銀行アプリで内容を確認して承認する場面に向いています。店舗端末へ銀行のパスワードを入力する必要はありません。OpenID Providerは認証要求をauth_req_idで識別し、Poll、Ping、Pushのいずれかで結果をClientへ届けます。
Purpose and responsibilities
処理を始めるConsumption Deviceを信頼しすぎず、ユーザー管理下のAuthentication Deviceで本人確認します。
ClientとOpenID ProviderがBackchannel Authentication Endpointで直接通信し、Consumption Deviceのブラウザ遷移を使いません。
Client登録時にPoll、Ping、Pushを選び、利用環境に合った方法で認証結果を受け取ります。
Key concepts
Security considerations
仕様を実装するときは、正常系の通信だけでなく、値のすり替え、再利用、漏えいが起きた場合も考えます。
ClientはBackchannel Authentication EndpointとToken Endpointで認証される必要があります。
login_hint等で特定したユーザーと、Authentication Device上のユーザーを安全に結び付けます。
binding_messageへ取引内容を表示し、ユーザーが意図した要求か確認できるようにします。
auth_req_idとclient_notification_tokenを推測困難にし、有効期限と一度限り利用を守ります。
Interactive flows
Clientがブラウザリダイレクトを使わずに認証を開始し、ユーザーが別の認証端末で承認する、端末分離型のOpenID Connectフローです。
図を再生する →OpenID Connect CIBA Core 1.0 · Interactive flowCIBA Backchannel Authentication — Ping Mode認証完了時にOpenID ProviderがClientへauth_req_idだけを通知し、ClientがToken Endpointから結果を取得するCIBAフローです。
図を再生する →OpenID Connect CIBA Core 1.0 · Interactive flowCIBA Backchannel Authentication — Push Mode認証完了時にOpenID ProviderがClient Notification Endpointへトークンセットを直接配送するCIBAフローです。
図を再生する →Position and relationship
CIBAはOpenID Connect Coreの認証セマンティクスを変更せず、認証開始と結果配送をバックチャネル化します。Device Authorization Grantも端末分離を扱いますが、Device Flowはuser_codeをユーザーが別端末へ入力し、CIBAはClientがユーザーhintを使って認証要求を開始します。
Other specifications