Televisiot, pelikonsolit ja komentorivityökalut
Television on hankala näyttää kirjautumissivua, eikä komentorivityökalun pitäisi kysyä salasanaa. Laitekulussa laite näyttää lyhyen koodin, ja ihminen kirjoittaa sen ympäristön Lobbyyn puhelimellaan tai tietokoneellaan, jolla hän on jo kirjautuneena.
Rekisteröi sovellus
Avaa Usher Consolessa ympäristö ja sitten Sovellukset → Uusi sovellus → TV- tai komentorivisovellus. Sovellus saa asiakastunnuksen mutta ei salaisuutta: laite ei pysty pitämään sitä salassa.
Kulku
# 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": "…" }- Kysele kohteliaasti. Odota
intervalsekuntia kyselyjen välillä. Liian tiheään kyselyyn vastataanslow_down. - Lopeta, kun pyydetään.
access_deniedtarkoittaa, että ihminen kieltäytyi;expired_tokentarkoittaa, että kymmenen minuuttia kului. Pyydä uusi koodi. - Näytä myös osoite. Kaikki eivät voi skannata QR-koodia: näytä
verification_urija koodi ryhmiin jaettuna, kuten6L95-PBQQ.
Osoitteessa /device Lobby näyttää ihmiselle, mikä sovellus pyytää pääsyä ja mihin. Se kehottaa jatkamaan vain, jos hän aloitti tämän itse ja hänen laitteensa näyttää saman koodin.
Sido tunnukset laitteeseen (DPoP)
Laitteelta kopioitu tunnus on yhä tunnus. DPoP:ssa (RFC 9449) laitteella on oma yksityinen avain, ja se lähettää jokaisen pyynnön mukana uuden allekirjoitetun todisteen. Avaimeen sidottu tunnus on hyödytön ilman avainta.
- Pyydä sidottuja tunnuksia: lähetä tunnuspyyntöjesi mukana
DPoP-otsake, niin Usher sitoo myöntämänsä tunnukset avaimeesi (token_typeonDPoP). - Vaadi niitä: ota Vaadi DPoP käyttöön, kun luot sovelluksen. Silloin Usher ei myönnä sille yhtään tunnusta ilman todistetta.
- Käytä niitä muodossa
Authorization: DPoP <token>ja liitä mukaan todiste kyseiselle pyynnölle. - Kirjastot: useimmat DPoP:ta tukevat OAuth-kirjastot tekevät kaiken tämän puolestasi (esimerkiksi
openid-client-kirjastonDPoP-asetus).