┌─────────────┐ ┌───────┐ ┌─────────────┐ ┌──────────────────────┐ │Authenticator│ │Browser│ │Relying Party│ │Authentication Service│ └──────┬──────┘ └───┬───┘ └──────┬──────┘ └───────────┬──────────┘ │ │[1] Request access to resource │ │ │ │──────────────────────────────>│ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ [2] Generate new Session ID │ │ │ │<───┘ │ │ │ │ │ │ │ │ [3] Request QR w/ Session ID │ │ │ │─────────────────────────────────>│ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ [4] Generate payload for Session ID │ │ │ │<───┘ │ │ │ │ │ │ │ [5] Return QR payload │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ │ │ │ │ [6] Display QR payload │ │ │ │<──────────────────────────────│ │ │ │ │ │ │ [7] Scan QR code │ │ │ │────────────────────>│ │ │ │ │ │ │ │ │ [8] Send QR payload + Device ID │ │───────────────────────────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ [9] Verify QR Payload Signature │ │ │ │<───┘ │ │ │ │ │ │ [10] Authentication challenge │ │<───────────────────────────────────────────────────────────────────────────────────────│ │ │ │ │ │ │ [11] Authentication response │ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ >│ │ │ │ │ │ │ │ [12] POST authentication result │ │ │ │<─────────────────────────────────│ │ │ │ │ │ │ │────┐ │ │ │ │ │ [13] Authorization │ │ │ │<───┘ │ │ │ │ │ │ │ [14] Authenticated session │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ ┌──────┴──────┐ ┌───┴───┐ ┌──────┴──────┐ ┌───────────┴──────────┐ │Authenticator│ │Browser│ │Relying Party│ │Authentication Service│ └─────────────┘ └───────┘ └─────────────┘ └──────────────────────┘