టీవీలు, కన్సోల్లు, కమాండ్-లైన్ టూల్స్
టీవీ సైన్-ఇన్ పేజీని సులభంగా చూపించలేదు, కమాండ్-లైన్ టూల్ పాస్వర్డ్ అడగకూడదు. డివైస్ ఫ్లోతో, పరికరం ఒక చిన్న కోడ్ను చూపిస్తుంది, వ్యక్తి దాన్ని తమ ఫోన్ లేదా కంప్యూటర్లో, తాము ఇప్పటికే సైన్ ఇన్ అయి ఉన్న ఎన్విరాన్మెంట్ లాబీలో టైప్ చేస్తారు.
యాప్ను నమోదు చేయండి
Usher Consoleలో, ఎన్విరాన్మెంట్ను తెరిచి, ఆపై Applications → New application → TV or command line ఎంచుకోండి. దానికి ఒక క్లయింట్ 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 వద్ద, ఏ యాప్ అడుగుతోందో, దేని కోసం అడుగుతోందో లాబీ వ్యక్తికి చూపిస్తుంది. వారే దీన్ని మొదలుపెట్టి ఉంటే, వారి పరికరం అదే కోడ్ను చూపిస్తుంటే మాత్రమే ముందుకు వెళ్లమని చెబుతుంది.
టోకెన్లను పరికరానికి బంధించండి (DPoP)
పరికరం నుండి కాపీ చేసిన టోకెన్ కూడా టోకెనే. DPoP (RFC 9449)తో, పరికరం ఒక ప్రైవేట్ కీని ఉంచుకుంటుంది, ప్రతి అభ్యర్థనతో తాజాగా సైన్ చేసిన రుజువును పంపుతుంది. ఆ కీకి బంధించిన టోకెన్ అది లేకుండా పనికిరాదు.
- బంధించిన టోకెన్లను అడగండి: మీ టోకెన్ అభ్యర్థనలతో
DPoPహెడర్ను పంపండి, Usher తాను జారీ చేసేదాన్ని మీ కీకి బంధిస్తుంది (token_typeవిలువDPoPఅవుతుంది). - వాటిని తప్పనిసరి చేయండి: యాప్ను సృష్టించేటప్పుడు Require DPoPను ఆన్ చేయండి. అప్పుడు రుజువు లేకుండా Usher దానికి ఏ టోకెన్నూ జారీ చేయదు.
- వాటిని ఉపయోగించండి:
Authorization: DPoP <token>తో, ఆ అభ్యర్థనకు ఒక రుజువుతో పాటు. - లైబ్రరీలు: DPoPకు మద్దతు ఉన్న చాలా OAuth లైబ్రరీలు ఇదంతా మీ కోసం చేస్తాయి (ఉదాహరణకు
openid-clientయొక్కDPoPఎంపిక).