ਸਮੱਗਰੀ ’ਤੇ ਜਾਓ
ਦਸਤਾਵੇਜ਼ · ਟੀਵੀ ਅਤੇ ਕਮਾਂਡ-ਲਾਈਨ ਟੂਲ

ਟੀਵੀ, ਕੰਸੋਲ ਅਤੇ ਕਮਾਂਡ-ਲਾਈਨ ਟੂਲ

ਟੀਵੀ ਆਸਾਨੀ ਨਾਲ ਸਾਈਨ-ਇਨ ਪੰਨਾ ਨਹੀਂ ਦਿਖਾ ਸਕਦਾ, ਅਤੇ ਕਮਾਂਡ-ਲਾਈਨ ਟੂਲ ਨੂੰ ਪਾਸਵਰਡ ਨਹੀਂ ਮੰਗਣਾ ਚਾਹੀਦਾ। ਡਿਵਾਈਸ ਫਲੋ ਵਿੱਚ, ਡਿਵਾਈਸ ਇੱਕ ਛੋਟਾ ਕੋਡ ਦਿਖਾਉਂਦਾ ਹੈ, ਅਤੇ ਵਿਅਕਤੀ ਉਸਨੂੰ ਆਪਣੇ ਫ਼ੋਨ ਜਾਂ ਕੰਪਿਊਟਰ ’ਤੇ ਆਪਣੇ ਐਨਵਾਇਰਨਮੈਂਟ ਦੀ ਲਾਬੀ ਵਿੱਚ ਟਾਈਪ ਕਰਦਾ ਹੈ, ਜਿੱਥੇ ਉਹ ਪਹਿਲਾਂ ਹੀ ਸਾਈਨ ਇਨ ਹੈ।

ਐਪ ਰਜਿਸਟਰ ਕਰੋ

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 ਵਿਕਲਪ)।