Przejdź do treści
Dokumentacja · Telewizory i narzędzia wiersza poleceń

Telewizory, konsole i narzędzia wiersza poleceń

Telewizor nie wyświetli wygodnie strony logowania, a narzędzie wiersza poleceń nie powinno prosić o hasło. W przepływie kodu urządzenia urządzenie pokazuje krótki kod, a dana osoba wpisuje go w Lobby środowiska na telefonie lub komputerze, na którym ma już aktywną sesję.

Zarejestruj aplikację

W Usher Console otwórz środowisko, a następnie wybierz Aplikacje → Nowa aplikacja → Telewizor lub wiersz poleceń. Aplikacja dostaje identyfikator klienta, ale nie dostaje sekretu: urządzenie nie jest w stanie go bezpiecznie przechować.

Przepływ

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": "…" }
  • Odpytuj z umiarem. Między kolejnymi zapytaniami odczekaj interval sekund. Na szybsze odpytywanie serwer odpowiada slow_down.
  • Przestań, gdy trzeba. access_denied oznacza, że dana osoba odmówiła; expired_token oznacza, że minęło dziesięć minut. Poproś o nowy kod.
  • Pokaż też adres. Nie każdy może zeskanować kod QR: pokaż verification_uri i kod podzielony na części, na przykład 6L95-PBQQ.

Pod adresem /device Lobby pokazuje, która aplikacja prosi o dostęp i do czego. Radzi kontynuować tylko wtedy, gdy logowanie rozpoczęła ta sama osoba, a jej urządzenie pokazuje ten sam kod.

Powiąż tokeny z urządzeniem (DPoP)

Token skopiowany z urządzenia nadal jest tokenem. Dzięki DPoP (RFC 9449) urządzenie przechowuje klucz prywatny i przy każdym żądaniu wysyła świeży, podpisany dowód. Token powiązany z tym kluczem jest bez niego bezużyteczny.

  • Poproś o powiązane tokeny: wysyłaj nagłówek DPoP w żądaniach tokenów, a Usher powiąże wydawane tokeny z Twoim kluczem (token_type ma wartość DPoP).
  • Wymagaj ich: podczas tworzenia aplikacji włącz opcję Wymagaj DPoP. Usher nie wyda jej wtedy żadnego tokenu bez dowodu.
  • Używaj ich z nagłówkiem Authorization: DPoP <token> oraz dowodem dla danego żądania.
  • Biblioteki: większość bibliotek OAuth obsługujących DPoP zrobi to wszystko za Ciebie (na przykład opcja DPoP w openid-client).