TV, konsol, dan alat baris perintah
TV sulit menampilkan halaman masuk, dan alat baris perintah tidak seharusnya meminta kata sandi. Dengan alur perangkat, perangkat menampilkan kode singkat, lalu orang mengetiknya di Lobby lingkungan mereka melalui ponsel atau komputer, tempat mereka sudah masuk.
Daftarkan aplikasi
Di Usher Console, buka lingkungan, lalu Aplikasi → Aplikasi baru → TV atau baris perintah. Aplikasi ini mendapat ID klien tanpa rahasia: perangkat tidak dapat menyimpannya.
Alurnya
# 1. the device asks for a code
curl -s -X POST https://acme.usherid.com/api/auth/device/code \
-d client_id=YOUR_CLIENT_ID -d scope='openid email offline_access'
# → { "device_code": "…", "user_code": "6L95PBQQ",
# "verification_uri": "https://acme.usherid.com/device",
# "verification_uri_complete": "https://acme.usherid.com/device?user_code=6L95PBQQ",
# "expires_in": 600, "interval": 5 }
# 2. it shows the code (and a QR code of verification_uri_complete), then polls
curl -s -X POST https://acme.usherid.com/api/auth/oauth2/token \
-d grant_type=urn:ietf:params:oauth:grant-type:device_code \
-d device_code=… -d client_id=YOUR_CLIENT_ID
# → { "error": "authorization_pending" } until the person allows it,
# then { "access_token": "…", "id_token": "…", "refresh_token": "…" }- Lakukan polling dengan sopan. Tunggu
intervaldetik di antara polling. Polling yang lebih cepat dijawab denganslow_down. - Berhenti saat diminta.
access_deniedberarti orang tersebut menolak;expired_tokenberarti sepuluh menit sudah lewat. Minta kode baru. - Tampilkan alamatnya juga. Tidak semua orang bisa memindai kode QR: tampilkan
verification_uridan kodenya, dengan spasi seperti6L95-PBQQ.
Di /device, Lobby menunjukkan kepada orang tersebut aplikasi mana yang meminta dan untuk apa. Lobby meminta mereka melanjutkan hanya jika mereka sendiri yang memulainya dan perangkat mereka menampilkan kode yang sama.
Ikat token ke perangkat (DPoP)
Token yang disalin dari perangkat tetaplah token. Dengan DPoP (RFC 9449), perangkat menyimpan kunci privat dan mengirim bukti bertanda tangan yang baru di setiap permintaan. Token yang terikat ke kunci itu tidak berguna tanpanya.
- Minta token terikat: kirim header
DPoPbersama permintaan token Anda, dan Usher mengikat apa yang diterbitkannya ke kunci Anda (token_typebernilaiDPoP). - Wajibkan: nyalakan Wajibkan DPoP saat Anda membuat aplikasi. Usher lalu tidak menerbitkan token apa pun untuk aplikasi itu tanpa bukti.
- Gunakan dengan
Authorization: DPoP <token>, ditambah bukti untuk permintaan itu. - Pustaka: sebagian besar pustaka OAuth yang mendukung DPoP mengerjakan semua ini untuk Anda (misalnya opsi
DPoPdiopenid-client).