TV, konsol dan alat baris perintah
TV tidak mudah memaparkan halaman daftar masuk, dan alat baris perintah tidak sepatutnya meminta kata laluan. Dengan aliran peranti, peranti itu menunjukkan kod pendek, dan orang itu menaipnya ke dalam Lobby persekitaran anda pada telefon atau komputer mereka, tempat mereka sudah didaftar masuk.
Daftarkan aplikasi
Dalam Usher Console, buka persekitaran, kemudian Aplikasi → Aplikasi baharu → TV atau baris perintah. Ia mendapat ID klien tanpa rahsia: peranti tidak dapat menyimpannya.
Alirannya
# 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": "…" }- Tinjau dengan sopan. Tunggu
intervalsaat antara setiap tinjauan. Tinjauan yang lebih kerap dijawab denganslow_down. - Berhenti apabila diberitahu.
access_deniedbermakna orang itu menolak;expired_tokenbermakna sepuluh minit telah berlalu. Minta kod baharu. - Tunjukkan alamatnya juga. Bukan semua orang boleh mengimbas kod QR: tunjukkan
verification_uridan kodnya, dijarakkan seperti6L95-PBQQ.
Di /device, Lobby menunjukkan kepada orang itu aplikasi mana yang meminta dan untuk apa. Ia memberitahu mereka supaya meneruskan hanya jika mereka sendiri yang memulakannya dan peranti mereka menunjukkan kod yang sama.
Ikat token pada peranti (DPoP)
Token yang disalin daripada peranti tetap token. Dengan DPoP (RFC 9449), peranti menyimpan kunci peribadi dan menghantar bukti bertandatangan yang baharu bersama setiap permintaan. Token yang terikat pada kunci itu tidak berguna tanpanya.
- Minta token terikat: hantar pengepala
DPoPbersama permintaan token anda, dan Usher mengikat apa yang dikeluarkannya pada kunci anda (token_typeialahDPoP). - Wajibkannya: hidupkan Wajibkan DPoP semasa anda mencipta aplikasi itu. Usher kemudiannya tidak mengeluarkan token kepadanya tanpa bukti.
- Gunakannya dengan
Authorization: DPoP <token>, berserta bukti untuk permintaan itu. - Pustaka: kebanyakan pustaka OAuth yang menyokong DPoP melakukan semua ini untuk anda (pilihan
DPoPdalamopenid-client, contohnya).