Salt la conținut
Documentație · Televizoare și instrumente în linie de comandă

Televizoare, console și instrumente în linie de comandă

Un televizor nu poate afișa ușor o pagină de conectare, iar un instrument în linie de comandă n-ar trebui să ceară o parolă. Cu fluxul pentru dispozitive, dispozitivul afișează un cod scurt, iar persoana îl introduce în Lobby-ul mediului, pe telefon sau pe computer, unde este deja conectată.

Înregistrați aplicația

În Usher Console, deschideți mediul, apoi Aplicații → Aplicație nouă → TV sau linie de comandă. Aplicația primește un ID client și niciun secret: un dispozitiv nu poate păstra unul.

Fluxul

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": "…" }
  • Interogați politicos. Așteptați interval secunde între interogări. Interogarea mai rapidă primește răspunsul slow_down.
  • Opriți-vă când vi se spune. access_denied înseamnă că persoana a refuzat; expired_token înseamnă că au trecut zece minute. Cereți un cod nou.
  • Afișați și adresa. Nu oricine poate scana un cod QR: afișați verification_uri și codul, cu spațiere, ca 6L95-PBQQ.

La /device, Lobby-ul îi arată persoanei ce aplicație cere acces și pentru ce. Îi spune să continue doar dacă a pornit chiar ea procesul și dacă dispozitivul ei afișează același cod.

Legați tokenurile de dispozitiv (DPoP)

Un token copiat de pe un dispozitiv rămâne un token. Cu DPoP (RFC 9449), dispozitivul păstrează o cheie privată și trimite cu fiecare cerere o dovadă semnată nouă. Un token legat de acea cheie nu folosește la nimic fără ea.

  • Cereți tokenuri legate: trimiteți un antet DPoP cu cererile de tokenuri, iar Usher leagă de cheia dvs. ce emite (token_type este DPoP).
  • Impuneți-le: activați Solicitați DPoP când creați aplicația. Usher nu-i mai emite atunci niciun token fără o dovadă.
  • Folosiți-le cu Authorization: DPoP <token>, plus o dovadă pentru cererea respectivă.
  • Biblioteci: majoritatea bibliotecilor OAuth care acceptă DPoP fac toate acestea pentru dvs. (de exemplu, opțiunea DPoP din openid-client).