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 Framework→OAuth 2.0 Device Authorization (RFC 8628)OAuth 2.0 Device Authorization Grant→OAuth 2.1OAuth 2.1 Authorization Framework→OpenID Connect Core 1.0OpenID Connect Core 1.0→FIDO2 WebAuthn Level 3Web Authentication: Public Key Credentials→FIDO2 CTAP 2.2Client to Authenticator Protocol→FIDO UAF 1.1Universal Authentication Framework→FIDO U2F 1.2Universal Second Factor→OAuth 2.0 PKCE (RFC 7636)Proof Key for Code Exchange by OAuth Public Clients→JSON Web Token (RFC 7519)JSON Web Token (JWT)→OAuth 2.0 DPoP (RFC 9449)OAuth 2.0 Demonstrating Proof of Possession→SAML 2.0Security Assertion Markup Language 2.0→SCIM 2.0 (RFC 7644)System for Cross-domain Identity Management: Protocol→