Televízory, konzoly a nástroje príkazového riadka
Televízor ťažko zobrazí prihlasovaciu stránku a nástroj príkazového riadka by nemal žiadať heslo. Pri toku pre zariadenia zobrazí zariadenie krátky kód a človek ho zadá v Lobby svojho prostredia na telefóne alebo počítači, kde je už prihlásený.
Zaregistrujte aplikáciu
V Usher Console otvorte prostredie a potom Aplikácie → Nová aplikácia → TV alebo príkazový riadok. Aplikácia dostane ID klienta a žiadny tajný kód: zariadenie ho nedokáže uchovať v bezpečí.
Priebeh
# 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": "…" }- Dopytujte sa ohľaduplne. Medzi dopytmi čakajte
intervalsekúnd. Na rýchlejšie dopytovanie dostanete odpoveďslow_down. - Prestaňte, keď vám to povedia.
access_deniedznamená, že človek odmietol;expired_tokenznamená, že uplynulo desať minút. Vyžiadajte si nový kód. - Zobrazte aj adresu. Nie každý dokáže naskenovať QR kód: zobrazte
verification_uria kód s medzerou, napríklad6L95-PBQQ.
Na stránke /device Lobby ukáže, ktorá aplikácia žiada a o čo. Vyzve človeka, aby pokračoval, len ak to spustil sám a jeho zariadenie zobrazuje ten istý kód.
Naviažte tokeny na zariadenie (DPoP)
Token skopírovaný zo zariadenia je stále token. S DPoP (RFC 9449) si zariadenie uchováva súkromný kľúč a s každou požiadavkou posiela nový podpísaný dôkaz. Token viazaný na tento kľúč je bez neho bezcenný.
- Vyžiadajte si viazané tokeny: pošlite s požiadavkami na token hlavičku
DPoPa Usher naviaže to, čo vydá, na váš kľúč (token_typejeDPoP). - Vyžadujte ich: pri vytváraní aplikácie zapnite Vyžadovať DPoP. Usher jej potom bez dôkazu nevydá žiadny token.
- Používajte ich s
Authorization: DPoP <token>a k tomu s dôkazom pre danú požiadavku. - Knižnice: väčšina knižníc OAuth s podporou DPoP to všetko urobí za vás (napríklad voľba
DPoPvopenid-client).