認可コードフロー デバイス認証拡張
概要
認可コードフローの中で、ブラウザとは別の認証デバイス(スマートフォンアプリ等)に認証を委ねるための、idp-server 独自のプロトコル拡張です。
ブラウザの認可リクエストで開始し、サインイン画面とデバイスが別チャネルで進行します。サインイン画面は /authentication-status のポーリングで完了を検知します。
シーケンス
ブラウザ(SPA) idp-server 認証デバイス
│ │ │
├─ GET /v1/authorizations ──────▶ │
│◀─ 302 サインイン画面へ (id 付与) │ │
├─ GET /{id}/view-data ─────────▶ │
│ │ │
├─ POST /{id}/authentication-device-number-matching-challenge ─▶│
│◀─ { number_matching_code } │ コードを生成・サーバー保存 │
├─ 画面にコードを表示 │ │
│ │ │
├─ POST /{id}/authentication-device-notification ──────────────▶│ (任意)
│ │─── push ────────────────────▶│
│ │ │
│ │◀── GET /v1/authentication-devices/{device-id}/authentications
│ │ │
│ │◀── POST /{id}/authentication-device-number-matching
│ │ ユーザーが画面から転記したコード
│ │ │
│ │◀── POST /v1/authentications/{transaction-id}/fido-uaf-authentication-challenge
│ │◀── POST /v1/authentications/{transaction-id}/fido-uaf-authentication
│ │ │
├─ GET /{id}/authentication-status ──▶ success │
├─ POST /{id}/authorize ─────────▶ │
│◀─ 302 redirect_uri?code=... │ │