OpenID Connect CIBA Core 1.0

Client-Initiated Backchannel Authentication

ClientからOpenID Providerへバックチャネルで認証を開始し、ユーザーが別のAuthentication Deviceで本人確認・承認する非同期認証フローを定義します。

STATUSOpenID Foundation Final SpecificationFLOWS3 documentedPrimary specification ↗

この仕様は、
何を解決するのか。

金融、コールセンター、店舗端末、スマートデバイスなど、操作端末と認証端末を分けたいシステム設計者向けです。

CIBAは、ClientがユーザーのブラウザをAuthorization Serverへリダイレクトせず、バックチャネルから認証を開始するOpenID Connectフローです。ユーザーが操作中のConsumption Deviceと、本人確認するAuthentication Deviceを分離できます。

たとえば店舗端末で支払いを始め、手元の銀行アプリで内容を確認して承認する場面に向いています。店舗端末へ銀行のパスワードを入力する必要はありません。OpenID Providerは認証要求をauth_req_idで識別し、Poll、Ping、Pushのいずれかで結果をClientへ届けます。

仕様が定める、大切なこと。

01

端末を分離する

処理を始めるConsumption Deviceを信頼しすぎず、ユーザー管理下のAuthentication Deviceで本人確認します。

02

リダイレクトを不要にする

ClientとOpenID ProviderがBackchannel Authentication Endpointで直接通信し、Consumption Deviceのブラウザ遷移を使いません。

03

非同期結果を配送する

Client登録時にPoll、Ping、Pushを選び、利用環境に合った方法で認証結果を受け取ります。

01Backchannel Authentication Endpoint02auth_req_id03Consumption Device / Authentication Device04Poll / Ping / Push05No Browser Redirect

安全に使うための確認事項。

仕様を実装するときは、正常系の通信だけでなく、値のすり替え、再利用、漏えいが起きた場合も考えます。

  1. 01

    ClientはBackchannel Authentication EndpointとToken Endpointで認証される必要があります。

  2. 02

    login_hint等で特定したユーザーと、Authentication Device上のユーザーを安全に結び付けます。

  3. 03

    binding_messageへ取引内容を表示し、ユーザーが意図した要求か確認できるようにします。

  4. 04

    auth_req_idとclient_notification_tokenを推測困難にし、有効期限と一度限り利用を守ります。

この仕様に属するフロー

ほかの仕様との関係

CIBAはOpenID Connect Coreの認証セマンティクスを変更せず、認証開始と結果配送をバックチャネル化します。Device Authorization Grantも端末分離を扱いますが、Device Flowはuser_codeをユーザーが別端末へ入力し、CIBAはClientがユーザーhintを使って認証要求を開始します。

OAuth 2.0 (RFC 6749)The OAuth 2.0 Authorization FrameworkOAuth 2.0 Device Authorization (RFC 8628)OAuth 2.0 Device Authorization GrantOAuth 2.1OAuth 2.1 Authorization FrameworkOpenID Connect Core 1.0OpenID Connect Core 1.0FIDO2 WebAuthn Level 3Web Authentication: Public Key CredentialsFIDO2 CTAP 2.2Client to Authenticator ProtocolFIDO UAF 1.1Universal Authentication FrameworkFIDO U2F 1.2Universal Second FactorOAuth 2.0 PKCE (RFC 7636)Proof Key for Code Exchange by OAuth Public ClientsJSON Web Token (RFC 7519)JSON Web Token (JWT)OAuth 2.0 DPoP (RFC 9449)OAuth 2.0 Demonstrating Proof of PossessionSAML 2.0Security Assertion Markup Language 2.0SCIM 2.0 (RFC 7644)System for Cross-domain Identity Management: Protocol