CIBAとは何か
このドキュメントの目的
CIBA(Client Initiated Backchannel Authentication) の基礎を理解し、従来のOAuth 2.0フローとの違いを把握することが目標です。
従来のフロー vs CIBA
従来のAuthorization Code Flow
特徴: 認証要求と認証実行が同じデバイス
┌─────────────────────────────────────────────────┐
│ │
│ [Webブラウザ] │
│ │
│ 1. ログインボタンをクリック │
│ ↓ │
│ 2. 認可サーバーにリダイレクト │
│ ↓ │
│ 3. ログイン画面でパスワード入力 ←─────────┐ │
│ ↓ 同じ │
│ 4. 認証完了 デバイス│
│ ↓ │ │
│ 5. Authorization Code取得 │ │
│ ↓ │ │
│ 6. Token Request │ │
│ ↓ ─────┘ │
│ 7. Access Token取得 │
│ │
└─────────────────────────────────────────────────┘
制約:
- ユーザーはブラウザでパスワードを入力する必要がある
- キーボードがないデバイス(ATM、TV)では入力が困難
CIBA
特徴: 認証要求と認証実行が異なるデバイス
┌──────────────────┐ ┌──────────────────┐
│ │ │ │
│ [PCアプリ] │ │ [スマホアプリ] │
│ │ │ │
│ 1. ログイン要求 │ │ │
│ ↓ │ │ │
│ 2. 認証リクエスト│ │ │
│ ↓ │ │ │
│ ┌──────────────┐ │ │ │
│ │認可サーバー │ │──3. プッシュ通知──→│ 4. 通知受信 │
│ │ │ │ │ ↓ │
│ │ auth_req_id │ │ │ 5. 内容確認 │
│ │ 返却 │ │ │ ↓ │
│ └──── ──────────┘ │ │ 6. 生体認証 │
│ ↓ │ │ ↓ │
│ 7. ポーリング │ │ 7. 承認/拒否 │
│ (5秒ごと) │ │ ↓ │
│ ↓ │ │ ┌──────────────┐ │
│ ┌──────────────┐ │ │ │認可サーバー │ │
│ │認可サーバー │ │←──8. 承認完了記録──│ │ │ │
│ │ │ │ │ └──────────────┘ │
│ │ Token発行 │ │ │ │
│ └──────────────┘ │ │ │
│ ↓ │ │ │
│ 9. Access Token │ │ │
│ 取得 │ │ │
│ │ │ │
└──────────────────┘ └──────────────────┘
認証要求デバイス 認証実行デバイス
利点:
- PCにパスワード入力不要
- スマホの生体認証を活用
- デバイス分離によるセキュリティ向上