مواد پر جائیں
دستاویزات · ٹی وی اور کمانڈ لائن ٹولز

ٹی وی، کنسولز اور کمانڈ لائن ٹولز

ٹی وی آسانی سے سائن ان صفحہ نہیں دکھا سکتا، اور کمانڈ لائن ٹول کو پاس ورڈ نہیں مانگنا چاہیے۔ ڈیوائس فلو میں آلہ ایک مختصر کوڈ دکھاتا ہے، اور فرد اسے اپنے فون یا کمپیوٹر پر، جہاں وہ پہلے سے سائن ان ہے، اپنے انوائرنمنٹ کی لابی میں ٹائپ کرتا ہے۔

ایپ رجسٹر کریں

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 آپشن)۔