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
# 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
intervalsecunde între interogări. Interogarea mai rapidă primește răspunsulslow_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, ca6L95-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
DPoPcu cererile de tokenuri, iar Usher leagă de cheia dvs. ce emite (token_typeesteDPoP). - 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
DPoPdinopenid-client).