İçeriğe geç
Belgeler · TV’ler ve komut satırı araçları

TV’ler, oyun konsolları ve komut satırı araçları

Bir TV kolayca giriş sayfası gösteremez, bir komut satırı aracı da parola istememelidir. Aygıt akışında aygıt kısa bir kod gösterir; kişi de bu kodu, zaten giriş yapmış olduğu telefonunda ya da bilgisayarında, ortamının Lobby’sine yazar.

Uygulamayı kaydedin

Usher Console’da ortamı açın, ardından Uygulamalar → Yeni uygulama → TV veya komut satırı yolunu izleyin. Uygulama bir istemci kimliği alır ama gizli anahtar almaz: bir aygıt gizli anahtar saklayamaz.

Akış

Terminal
# 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": "…" }
  • Kibarca yoklayın. Yoklamalar arasında interval saniye bekleyin. Daha sık yoklamaya slow_down yanıtı verilir.
  • Size söylendiğinde durun. access_denied, kişinin reddettiği anlamına gelir; expired_token, on dakikanın geçtiği anlamına gelir. Yeni bir kod isteyin.
  • Adresi de gösterin. Herkes QR kod tarayamaz: verification_uri adresini ve kodu 6L95-PBQQ gibi aralıklı olarak gösterin.

Lobby, /device adresinde kişiye hangi uygulamanın ne istediğini gösterir. Ona yalnızca işlemi kendisi başlattıysa ve aygıtında aynı kod görünüyorsa devam etmesini söyler.

Belirteçleri aygıta bağlayın (DPoP)

Bir aygıttan kopyalanan belirteç yine de bir belirteçtir. DPoP ile (RFC 9449) aygıt özel bir anahtar saklar ve her istekle birlikte yeni, imzalı bir kanıt gönderir. Bu anahtara bağlı bir belirteç, anahtar olmadan işe yaramaz.

  • Bağlı belirteç isteyin: belirteç isteklerinizle birlikte bir DPoP üst bilgisi gönderin; Usher da verdiklerini anahtarınıza bağlar (token_type değeri DPoP olur).
  • Zorunlu kılın: uygulamayı oluştururken DPoP’u zorunlu kıl seçeneğini açın. Usher bundan sonra o uygulamaya kanıt olmadan hiçbir belirteç vermez.
  • Kullanın: Authorization: DPoP <token> ile, o isteğe ait bir kanıtla birlikte.
  • Kütüphaneler: DPoP desteği olan OAuth kütüphanelerinin çoğu bunların hepsini sizin için yapar (örneğin openid-client kütüphanesinin DPoP seçeneği).