┌─────────────┐ ┌───────┐ ┌──┐ ┌───────┐ │authenticator│ │browser│ │rp│ │service│ └──────┬──────┘ └───┬───┘ └─┬┘ └───┬───┘ │ │ Request access to resource │ │ │ │────────────────────────────>│ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ Generate new Session ID │ │ │ │<───┘ │ │ │ │ Request QR w/ Session ID │ │ │ │─────────────────────────────>│ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ Generate payload for Session ID │ │ │ │<───┘ │ │ │ Return QR payload │ │ │ │< ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ Display QR payload │ │ │ │<────────────────────────────│ │ │ │ │ │ │ Scan QR code │ │ │ │──────────────>│ │ │ │ │ │ │ │ │ Send QR payload + Device ID │ │───────────────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ Verify QR Payload Signature │ │ │ │<───┘ │ │ Authentication challenge │ │<───────────────────────────────────────────────────────────────────────────│ │ │ │ │ │ │ Authentication response │ │─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─>│ │ │ │ │ │ │ │ POST authentication result │ │ │ │<─────────────────────────────│ │ │ │ │ │ │ │────┐ │ │ │ │ │ Authorization │ │ │ │<───┘ │ │ │ Authenticated session │ │ │ │< ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ │ │ │ ┌──────┴──────┐ ┌───┴───┐ ┌─┴┐ ┌───┴───┐ │authenticator│ │browser│ │rp│ │service│ └─────────────┘ └───────┘ └──┘ └───────┘