Preskočiť na obsah
Dokumentácia · Televízory a nástroje príkazového riadka

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

Terminál
# 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 interval sekúnd. Na rýchlejšie dopytovanie dostanete odpoveď slow_down.
  • Prestaňte, keď vám to povedia. access_denied znamená, že človek odmietol; expired_token znamená, ž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_uri a kód s medzerou, napríklad 6L95-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.

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 DPoP a Usher naviaže to, čo vydá, na váš kľúč (token_type je DPoP).
  • 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 DPoP v openid-client).