Televizori, konzole i alati naredbenog retka
Televizor teško može prikazati stranicu za prijavu, a alat naredbenog retka ne bi smio tražiti lozinku. Uz tok za uređaje uređaj prikazuje kratak kôd, a osoba ga upisuje u Lobby svojeg okruženja na telefonu ili računalu, gdje je već prijavljena.
Registrirajte aplikaciju
U sučelju Usher Console otvorite okruženje, a zatim Aplikacije → Nova aplikacija → TV ili naredbeni redak. Aplikacija dobiva ID klijenta bez tajne: uređaj je ne može čuvati.
Tok
# 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": "…" }- Pitajte umjereno. Između upita čekajte
intervalsekundi. Na češće upite odgovor jeslow_down. - Stanite kad vam se kaže.
access_deniedznači da je osoba odbila;expired_tokenznači da je prošlo deset minuta. Zatražite novi kôd. - Prikažite i adresu. Ne može svatko skenirati QR kôd: prikažite
verification_urii kôd, razmaknut kao6L95-PBQQ.
Na adresi /device Lobby osobi pokazuje koja aplikacija traži pristup i za što. Kaže joj da nastavi samo ako je sama pokrenula postupak i ako njezin uređaj prikazuje isti kôd.
Vežite tokene uz uređaj (DPoP)
Token kopiran s uređaja i dalje je token. Uz DPoP (RFC 9449) uređaj čuva privatni ključ i uz svaki zahtjev šalje novi potpisani dokaz. Token vezan uz taj ključ bez njega je beskoristan.
- Zatražite vezane tokene: uz zahtjeve za token šaljite zaglavlje
DPoP, a Usher ono što izda veže uz vaš ključ (token_typejeDPoP). - Zahtijevajte ih: uključite Zahtijevaj DPoP kad izrađujete aplikaciju. Usher joj tada ne izdaje nijedan token bez dokaza.
- Koristite ih uz
Authorization: DPoP <token>, zajedno s dokazom za taj zahtjev. - Biblioteke: većina OAuth biblioteka s podrškom za DPoP sve to radi umjesto vas (na primjer, opcija
DPoPu biblioteciopenid-client).