Gå til innholdet
Dokumentasjon · TV-er og kommandolinjeverktøy

TV-er, spillkonsoller og kommandolinjeverktøy

En TV kan vanskelig vise en påloggingsside, og et kommandolinjeverktøy bør ikke be om et passord. Med enhetsflyten viser enheten en kort kode, og personen skriver den inn i miljøets Lobby på telefonen eller datamaskinen, der de allerede er pålogget.

Registrer appen

I Usher Console åpner du miljøet og deretter Apper → Ny app → TV eller kommandolinje. Den får en klient-ID og ingen hemmelighet: en enhet kan ikke holde på en.

Flyten

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": "…" }
  • Spør høflig. Vent interval sekunder mellom hver gang du spør. Spør du oftere, får du svaret slow_down.
  • Stopp når du får beskjed. access_denied betyr at personen sa nei; expired_token betyr at ti minutter har gått. Be om en ny kode.
  • Vis adressen også. Ikke alle kan skanne en QR-kode: vis verification_uri og koden, delt opp som 6L95-PBQQ.

På /device viser Lobbyen personen hvilken app som spør, og om hva. Den ber dem bare fortsette hvis de startet det selv og enheten viser den samme koden.

Bind tokener til enheten (DPoP)

Et token som er kopiert fra en enhet, er fortsatt et token. Med DPoP (RFC 9449) har enheten en privat nøkkel og sender et ferskt, signert bevis med hver forespørsel. Et token som er bundet til den nøkkelen, er ubrukelig uten den.

  • Be om bundne tokener: send en DPoP-header med tokenforespørslene dine, så binder Usher det den utsteder, til nøkkelen din (token_type er DPoP).
  • Krev dem: slå på Krev DPoP når du oppretter appen. Da utsteder Usher ingen tokener til den uten et bevis.
  • Bruk dem med Authorization: DPoP <token>, pluss et bevis for den forespørselen.
  • Biblioteker: de fleste OAuth-biblioteker med støtte for DPoP gjør alt dette for deg (for eksempel DPoP-alternativet i openid-client).