मजकुराकडे जा
दस्तऐवज · टीव्ही आणि कमांड-लाइन टूल

टीव्ही, कन्सोल आणि कमांड-लाइन टूल

टीव्हीला साइन-इन पेज दाखवणे सोपे नसते, आणि कमांड-लाइन टूलने पासवर्ड मागू नये. डिव्हाइस फ्लोमध्ये, डिव्हाइस एक छोटा कोड दाखवते, आणि व्यक्ती तो त्यांच्या फोन किंवा कॉम्प्युटरवर, जिथे ते आधीच साइन इन आहेत, एन्व्हायर्नमेंटच्या लॉबीमध्ये टाइप करते.

ॲप नोंदवा

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 वर, कोणते ॲप आणि कशासाठी विचारत आहे हे लॉबी व्यक्तीला दाखवते. त्यांनी स्वतःच हे सुरू केले असेल आणि त्यांच्या डिव्हाइसवर तोच कोड दिसत असेल, तरच पुढे जा असे ती सांगते.

टोकन डिव्हाइसशी बांधा (DPoP)

डिव्हाइसवरून कॉपी केलेले टोकन तरीही टोकनच असते. DPoP (RFC 9449) सह, डिव्हाइस एक प्रायव्हेट की ठेवते आणि प्रत्येक विनंतीसोबत नवीन सही केलेला प्रूफ पाठवते. त्या की शी बांधलेले टोकन तिच्याशिवाय निरुपयोगी असते.

  • बांधलेले टोकन मागा: तुमच्या टोकन विनंत्यांसोबत DPoP हेडर पाठवा, आणि Usher जे जारी करतो ते तुमच्या की शी बांधतो (token_type हे DPoP असते).
  • ते अनिवार्य करा: ॲप तयार करताना DPoP अनिवार्य सुरू करा. मग Usher त्याला प्रूफशिवाय कोणतेही टोकन जारी करत नाही.
  • ते वापरा Authorization: DPoP <token> सह, आणि त्या विनंतीसाठी एका प्रूफसह.
  • लायब्ररी: DPoP सपोर्ट असलेल्या बहुतेक OAuth लायब्ररी हे सर्व तुमच्यासाठी करतात (उदाहरणार्थ, openid-client चा DPoP पर्याय).