TV-k, konzolok és parancssori eszközök
Egy TV nehezen tud bejelentkezési oldalt megjeleníteni, egy parancssori eszköznek pedig nem illik jelszót kérnie. Az eszközfolyamatban az eszköz egy rövid kódot mutat, az illető pedig beírja a környezete Lobbyjában a telefonján vagy a számítógépén, ahol már be van jelentkezve.
Regisztráld az appot
Az Usher Console-ban nyisd meg a környezetet, majd válaszd az Alkalmazások → Új alkalmazás → TV vagy parancssor lehetőséget. Az app ügyfél-azonosítót kap, titkos kulcsot nem: egy eszköz nem tudná titokban tartani.
A folyamat
# 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": "…" }- Kérdezz le udvariasan. A lekérdezések között várj
intervalmásodpercet. A túl gyakori lekérdezésre a válaszslow_down. - Állj meg, ha szólnak. Az
access_deniedazt jelenti, hogy az illető elutasította; azexpired_tokenazt, hogy letelt a tíz perc. Kérj új kódot. - Mutasd a címet is. Nem mindenki tud QR-kódot beolvasni: jelenítsd meg a
verification_uricímet és a kódot, tagolva, például6L95-PBQQ.
A /device oldalon a Lobby megmutatja az illetőnek, melyik app kér hozzáférést, és mihez. Arra kéri, hogy csak akkor folytassa, ha ő maga indította a folyamatot, és az eszköze ugyanazt a kódot mutatja.
Kösd a tokeneket az eszközhöz (DPoP)
Egy eszközről lemásolt token is token. A DPoP-pal (RFC 9449) az eszköz egy privát kulcsot tart magánál, és minden kéréshez friss, aláírt igazolást küld. Az ehhez a kulcshoz kötött token nélküle használhatatlan.
- Kérj kötött tokeneket: küldj
DPoPfejlécet a tokenkéréseiddel, és az Usher a kiadott tokeneket a kulcsodhoz köti (atoken_typeértékeDPoP). - Tedd kötelezővé: az app létrehozásakor kapcsold be a DPoP megkövetelése beállítást. Ezután az Usher igazolás nélkül egyetlen tokent sem ad ki neki.
- Használd őket az
Authorization: DPoP <token>fejléccel, plusz egy igazolással az adott kéréshez. - Könyvtárak: a legtöbb DPoP-ot támogató OAuth-könyvtár mindezt elvégzi helyetted (például az
openid-clientDPoPbeállítása).