Siirry sisältöön
Dokumentaatio · Televisiot ja komentorivityökalut

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

Pääte
# 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 interval sekuntia kyselyjen välillä. Liian tiheään kyselyyn vastataan slow_down.
  • Lopeta, kun pyydetään. access_denied tarkoittaa, että ihminen kieltäytyi; expired_token tarkoittaa, että kymmenen minuuttia kului. Pyydä uusi koodi.
  • Näytä myös osoite. Kaikki eivät voi skannata QR-koodia: näytä verification_uri ja koodi ryhmiin jaettuna, kuten 6L95-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_type on DPoP).
  • 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-kirjaston DPoP-asetus).