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
# 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
intervalsekund. Na rychlejší dotazování dostanete odpověďslow_down. - Přestaňte, když vám to řeknou.
access_deniedznamená, že člověk odmítl;expired_tokenznamená, že uplynulo deset minut. Požádejte o nový kód. - Zobrazte i adresu. Ne každý může naskenovat QR kód: zobrazte
verification_uria kód, rozdělený jako6L95-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.
Navažte tokeny na zařízení (DPoP)
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
DPoPse svými požadavky na token a Usher naváže, co vydá, na váš klíč (token_typejeDPoP). - 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
DPoPvopenid-client).