CIBA フロー
概要
idp-server は、OpenID Connect
の拡張仕様である OpenID Connect CIBA (Client Initiated Backchannel Authentication)
をサポートしています。
スマートフォン等のユーザー操作可能な端末を用いた非同期認証を実現し、以下のようなユースケースに最適です。
- 生体認証・FIDOを用いたリモート承認
- 金融機関の第二要素としての身元確認
シーケンス(抽象)
login_hint
idp-server は CIBA フローの login_hint パラメータに対して、複数の識別子形式をサポートしています。これにより、柔軟なユーザー特定が可能です。
CIBA 仕様 に準拠し、login_hint はユー ザー識別のヒントとして使用されます。
サポート形式
以下のような接頭辞つきの拡張形式に対応しており、ユーザーの識別方法を柔軟に指定できます:
| フォーマット | 意味 | 例 |
|---|---|---|
sub:<subject> | 内部ユーザーIDで直接識別 | sub:abc123 |
ex-sub:<subject>,idp:<id-provider> | 外部IdPのサブジェクトで識別 | ex-sub:ex-idp123,idp:ex-idp |
device:<deviceId>,idp:<id-provider> | 認証デバイスで識別 | device:device123,idp:ex-idp |
email:<email>,idp:<id-provider> | メールアドレスによる識別 | email:foo@example.com,idp:idp-server |
phone:<number>,idp:<id-provider> | 電話番号による識別 | phone:09012345678,idp:idp-server |
※ id-provider のデフォルト値は idp-serverとなります。 フェデレーションによる外部IdPを利用してユーザーを作成している場合は、外部IdPプロバイダー名を指定することができます。
ユーザー通知・端末連携
- ユーザー端末への通知は
AuthenticationDeviceNotifierプラグインにより実行されます- デフォルト実装: FCM (Firebase Cloud Messaging) / APNs対応
- 通知チャネルは
AuthenticationDeviceの設定で制御
認証方式
CIBA フローにおけるユーザー認証も、通常の認可コードフローと同様に認証ポリシーに従い実行されます。
- Password 認証
- Passkey 認証
- FIDO-UAF 認証
- Email / SMS OTP
- 認可内容に応じた多段認証
認証ポリシー(概要)
通常の認可コードフローと同様に、認可対象のスコープ・acr_values などを条件に、認証の強度を制御することができます。
バインディングメッセージ(binding_message)
概要
binding_message は、消費デバイスと認証デバイスを視覚的に連動させ、ユーザーがトランザクションを確認できるようにす るためのパラメータです。
The binding_message is intended to be displayed on both the consumption device and the authentication device to interlock them together for the transaction by way of a visual cue for the end-user.
用途
| 用途 | 説明 | 例 |
|---|---|---|
| フィッシング対策 | ユーザーが正しいトランザクションを承認しているか確認 | 確認コード: 1234 |
| トランザクション確認 | 金融取引等での取引内容確認 | 振込: ¥50,000 |
| セッション連動 | 複数デバイス間でのセッション一致確認 | TX-ABCD-1234 |
制約
- 最大長: 20文字
- 文字種: プレーンテキスト(特殊文字は避けることを推奨)
バックエンド検証
idp-serverは、認証デバイスでユーザーが入力したbinding_messageと、CIBAリクエスト時に送信さ れたbinding_messageの一致を検証する機能を提供しています。
認証インタラクションタイプ: authentication-device-binding-message
詳細: How-To: CIBAバインディングメッセージのバックエンド検証
デリバリーモード
idp-serverは Poll・Push・Pingの3つのモードをサポートしています。
| 項目 | 説明 | 備考 |
|---|---|---|
Poll | クライアントからポーリングを実施しトークンを取得する方式。 | |
Push | ユーザーの認証認可が完了した場合に、idp-serverからクライントにトークンをWebhookで連携する方式。 | FAPIでは利用不可。 |
Ping | ユーザーの認証認可が完了した場合に、idp-serverからクライントに完了通知をWebhookで連携する方式。 | クライントで完了通知を受け取るAPIの開発が必要 |
設定項目
idp-serverは、標準仕様に準拠した設定をサポートしています。