Přeskočit na obsah
Dokumentace · Televize a nástroje příkazového řádku

Televize, konzole a nástroje příkazového řádku

Televize přihlašovací stránku snadno nezobrazí a nástroj příkazového řádku by se neměl ptát na heslo. S tokem pro zařízení zobrazí zařízení krátký kód a člověk ho zadá do Lobby svého prostředí na telefonu nebo počítači, kde už je přihlášený.

Zaregistrujte aplikaci

V Usher Console otevřete prostředí a pak Aplikace → Nová aplikace → TV nebo příkazový řádek. Aplikace dostane ID klienta a žádný tajný klíč: zařízení ho nedokáže uchovat v tajnosti.

Tok

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": "…" }
  • Dotazujte se ohleduplně. Mezi dotazy počkejte interval sekund. Na rychlejší dotazování dostanete odpověď slow_down.
  • Přestaňte, když vám to řeknou. access_denied znamená, že člověk odmítl; expired_token znamená, že uplynulo deset minut. Požádejte o nový kód.
  • Zobrazte i adresu. Ne každý může naskenovat QR kód: zobrazte verification_uri a kód, rozdělený jako 6L95-PBQQ.

Na /device Lobby člověku ukáže, která aplikace žádá a o co. Řekne mu, ať pokračuje, jen pokud to sám spustil a jeho zařízení ukazuje stejný kód.

Token zkopírovaný ze zařízení je pořád token. S DPoP (RFC 9449) si zařízení drží soukromý klíč a s každým požadavkem posílá čerstvý podepsaný důkaz. Token vázaný na tento klíč je bez něj k ničemu.

  • Žádejte o vázané tokeny: posílejte hlavičku DPoP se svými požadavky na token a Usher naváže, co vydá, na váš klíč (token_type je DPoP).
  • Vyžadujte je: při vytváření aplikace zapněte Vyžadovat DPoP. Usher jí pak bez důkazu nevydá žádný token.
  • Používejte je s Authorization: DPoP <token> a k tomu s důkazem pro daný požadavek.
  • Knihovny: většina knihoven OAuth s podporou DPoP to všechno udělá za vás (například volba DPoP v openid-client).