Televizoriai, konsolės ir komandinės eilutės įrankiai
Televizoriui sunku parodyti prisijungimo puslapį, o komandinės eilutės įrankis neturėtų prašyti slaptažodžio. Naudojant įrenginio srautą, įrenginys parodo trumpą kodą, o žmogus jį įveda savo aplinkos Lobby telefone ar kompiuteryje, kur jau yra prisijungęs.
Užregistruokite programą
Usher Console atidarykite aplinką, tada Programos → Nauja programa → Televizorius arba komandinė eilutė. Programa gauna kliento ID ir jokios paslapties: įrenginys jos išsaugoti negali.
Srautas
# 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": "…" }- Klausinėkite mandagiai. Tarp užklausų palaukite
intervalsekundžių. Į dažnesnes užklausas atsakomaslow_down. - Sustokite, kai liepiama.
access_deniedreiškia, kad žmogus atsisakė;expired_token– kad praėjo dešimt minučių. Paprašykite naujo kodo. - Parodykite ir adresą. Ne kiekvienas gali nuskaityti QR kodą: parodykite
verification_uriir kodą, išskaidytą kaip6L95-PBQQ.
Adresu /device Lobby parodo žmogui, kuri programa prašo ir ko. Jis liepia tęsti tik tuo atveju, jei žmogus pats tai pradėjo ir jo įrenginys rodo tą patį kodą.
Susiekite žetonus su įrenginiu (DPoP)
Iš įrenginio nukopijuotas žetonas vis tiek yra žetonas. Su DPoP (RFC 9449) įrenginys laiko privatųjį raktą ir su kiekviena užklausa siunčia naują pasirašytą įrodymą. Su tuo raktu susietas žetonas be jo yra bevertis.
- Paprašykite susietų žetonų: siųskite
DPoPantraštę su savo žetonų užklausomis, ir Usher išduodamus žetonus susies su jūsų raktu (token_typeyraDPoP). - Reikalaukite jų: kurdami programą įjunkite Reikalauti DPoP. Tada Usher be įrodymo jai neišduos jokio žetono.
- Naudokite juos su
Authorization: DPoP <token>ir tos užklausos įrodymu. - Bibliotekos: dauguma OAuth bibliotekų, palaikančių DPoP, visa tai padaro už jus (pavyzdžiui,
openid-clientparinktisDPoP).