Langsung ke konten
Dokumentasi · TV dan alat baris perintah

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

Terminal
# 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 interval detik di antara polling. Polling yang lebih cepat dijawab dengan slow_down.
  • Berhenti saat diminta. access_denied berarti orang tersebut menolak; expired_token berarti sepuluh menit sudah lewat. Minta kode baru.
  • Tampilkan alamatnya juga. Tidak semua orang bisa memindai kode QR: tampilkan verification_uri dan kodenya, dengan spasi seperti 6L95-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 DPoP bersama permintaan token Anda, dan Usher mengikat apa yang diterbitkannya ke kunci Anda (token_type bernilai DPoP).
  • 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 DPoP di openid-client).