Теледидарлар, консольдер және пәрмен жолы құралдары
Теледидарға кіру бетін көрсету қиын, ал пәрмен жолы құралы құпиясөз сұрамауы керек. Құрылғы ағынында құрылғы қысқа кодты көрсетеді, ал адам оны телефонында немесе компьютерінде, өзі бұрыннан кірген ортасының Lobby бетіне енгізеді.
Қолданбаны тіркеңіз
Usher Console ішінде ортаны ашып, Қолданбалар → Жаңа қолданба → Теледидар немесе пәрмен жолы тармағын таңдаңыз. Қолданба клиент ID-ын алады, құпия алмайды: құрылғы оны сақтай алмайды.
Ағын
# 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": "…" }- Сыпайы сұраңыз. Сұраулар арасында
intervalсекунд күтіңіз. Жиірек сұрасаңыз,slow_downдеген жауап келеді. - Айтылғанда тоқтаңыз.
access_deniedадамның бас тартқанын білдіреді;expired_token— он минут өткенін. Жаңа код сұраңыз. - Мекенжайды да көрсетіңіз. QR кодын бәрі бірдей сканерлей алмайды:
verification_uriмен кодты6L95-PBQQсияқты бөліп көрсетіңіз.
/device мекенжайында Lobby адамға қай қолданба және не сұрап тұрғанын көрсетеді. Ол адамға мұны өзі бастаған болса және құрылғысы дәл сол кодты көрсетсе ғана жалғастыруды айтады.
Токендерді құрылғыға байланыстырыңыз (DPoP)
Құрылғыдан көшірілген токен бәрібір токен болып қала береді. DPoP (RFC 9449) арқылы құрылғы жеке кілтті сақтайды және әр сұраумен жаңа қол қойылған дәлел жібереді. Сол кілтке байланған токен онсыз пайдасыз.
- Байланған токендерді сұраңыз: токен сұрауларыңызбен
DPoPтақырыбын жіберіңіз, сонда Usher беретін токендерін сіздің кілтіңізге байланыстырады (token_typeмәні —DPoP). - Оларды талап етіңіз: қолданбаны жасағанда DPoP талап ету параметрін қосыңыз. Сонда Usher оған дәлелсіз ешбір токен бермейді.
- Оларды пайдаланыңыз:
Authorization: DPoP <token>және сол сұрауға арналған дәлел арқылы. - Кітапханалар: DPoP қолдайтын OAuth кітапханаларының көбі мұның бәрін сіз үшін жасайды (мысалы,
openid-clientкітапханасыныңDPoPпараметрі).