Pereiti prie turinio
Dokumentacija · Televizoriai ir komandinės eilutės įrankiai

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

Terminalas
# 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 interval sekundžių. Į dažnesnes užklausas atsakoma slow_down.
  • Sustokite, kai liepiama. access_denied reiš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_uri ir kodą, išskaidytą kaip 6L95-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 DPoP antraštę su savo žetonų užklausomis, ir Usher išduodamus žetonus susies su jūsų raktu (token_type yra DPoP).
  • 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-client parinktis DPoP).