Przejdź do treści
Dokumentacja · Obszary robocze, wystawcy i tokeny

Pojęcia

Kilka idei wyjaśnia niemal wszystko w Usher: gdzie co się znajduje, kto wydaje tokeny, gdzie ludzie się logują i jak długo ważny jest każdy token.

Obszary robocze, projekty i środowiska

  • Obszar roboczy to Twój zespół lub firma w Usher Console. Należą do niego jego członkowie i dziennik audytu.
  • Projekt to jeden produkt: Twoja aplikacja internetowa albo portal partnerski. Obszar roboczy może zawierać wiele projektów.
  • Środowisko to jedna działająca kopia projektu, zwykle deweloperskie i produkcyjne. To w środowiskach znajdują się ludzie, aplikacje, klucze i ustawienia.

Obszar roboczy · Acme Ltd

Projekt · Web

  • development · wise-otter-42
  • production · acme

Projekt · Portal partnerski

  • development · calm-heron-17
  • production · acme-partners
Każde środowisko jest osobnym wystawcą, z własnymi użytkownikami, kluczami i Lobby.

Środowiska nie współdzielą niczego istotnego. Każde ma własny schemat Postgres, własne klucze podpisywania i własne sekrety zapieczętowane własnym kluczem danych. Osoba, która zarejestruje się w środowisku deweloperskim, nie istnieje w produkcyjnym, a tokenu z jednego z nich nigdy nie da się zweryfikować kluczami drugiego.

Administrator obszaru roboczego może usunąć projekt na końcu jego strony Przegląd, po wpisaniu nazwy projektu. Wszystkie środowiska projektu znikają od razu: ich ludzie, aplikacje, klucze i ustawienia oraz każda sesja i każdy token, które wydały. Ich adresy przestają odpowiadać i nigdy nie są przydzielane ponownie, więc aplikacji, która wciąż ufa któremuś z nich, nie da się oszukać cudzym projektem.

Wystawcy

Każde środowisko jest osobnym wystawcą (issuer) OpenID Connect, pod własnym hostem w domenie najemców:

Wystawca
https://<handle>.usherid.com
  • Środowiska produkcyjne mają wybrany przez Ciebie uchwyt: od 3 do 32 małych liter, cyfr i pojedynczych łączników, taki jak nazwa Twojej firmy. Raz użyty uchwyt nigdy nie jest przydzielany ponownie.
  • Środowiska deweloperskie dostają losowy uchwyt, taki jak wise-otter-42, którego nikt nie pomyli z marką.

Wystawca jest ustalany przy tworzeniu środowiska, ponieważ każdy podpisany przez niego token wskazuje go w iss, a każda aplikacja, która mu ufa, sprawdza tę wartość.

Domena najemców to inna domena rejestrowalna niż własna domena Usher (usheridentity.com), więc strony logowania klienta nigdy nie są w tej samej witrynie (same-site) co Usher Console, a pliki cookie są przypisane do hosta: przeglądarka wysyła pliki cookie środowiska wyłącznie do tego środowiska.

Lobby

Lobby to strona logowania, którą każde środowisko hostuje pod adresem swojego wystawcy. Twoja aplikacja kieruje tam ludzi; Lobby ich loguje i odsyła z powrotem.

  • Zawsze podaje nazwę aplikacji, do której ktoś przechodzi, w etykiecie „Przechodzisz do aplikacji”.
  • Oferuje tylko metody, na które pozwala środowisko: klucze dostępu, kody wysyłane e-mailem, magiczne linki, konta społecznościowe (Google, GitHub, Microsoft, Apple) i hasła.
  • Może wymagać drugiego składnika: aplikacji uwierzytelniającej (z kodami zapasowymi) lub klucza dostępu.
  • Może być otwarte dla wszystkich albo ograniczone do listy gości z adresami i domenami.

Wygląda tak samo bez względu na to, z którego produktu ktoś przyszedł. To celowe: ludzie uczą się, jak wygląda prawdziwe Lobby, i zauważają, gdy strona nim nie jest.

Konta Usher

Większość środowisk ma własnych użytkowników. Konta Usher działają inaczej: jedno konto loguje osobę do każdej aplikacji, która oferuje „Kontynuuj przez Usher”. Ludzie zarządzają swoimi kontami pod adresem account.usheridentity.com.

Tokeny i czas ważności

TokenDomyślnieMożna ustawićDo czego służy
Kod autoryzacji5 minutStała wartośćWymieniany raz na tokeny. Jednorazowy.
Token ID10 minutOd 1 do 60 minutMówi Twojej aplikacji, kto się zalogował. Nie służy do wywoływania API.
Token dostępu10 minutOd 1 do 60 minutWysyłany do Twojego API, które go sprawdza.
Token odświeżania30 dniOd 1 do 90 dniPozwala uzyskać nowe tokeny dostępu. Rotowany przy każdym użyciu. Wymaga offline_access.
Maszynowy token dostępu15 minutOd 1 do 60 minutDla client_credentials: serwery, za którymi nie stoi żaden człowiek.
Kod wysłany e-mailem, magiczny link10 minutStała wartośćJedno logowanie. Kod pozwala na trzy próby.

Sesje w Lobby też mają czas ważności: sesja kończy się po 7 dniach bez użycia (od 1 do 30) i po 30 dniach łącznie (od 1 do 90). Zmiana ważnych danych, takich jak adres e-mail, wymaga logowania z ostatnich 10 minut.

Klucze podpisywania

Tokeny są domyślnie podpisywane algorytmem RS256; środowisko może zamiast niego używać ES256 lub EdDSA. Klucze publiczne są publikowane pod jwks_uri środowiska, więc Twoje biblioteki same je pobierają i wczytują nowe po rotacji kluczy.

Zakresy

ZakresCo otrzymuje Twoja aplikacja
openidWymagany. Token ID z identyfikatorem sub danej osoby.
profileImię i nazwisko oraz zdjęcie.
emailAdres e-mail i informację, czy został zweryfikowany.
offline_accessToken odświeżania, który podtrzymuje sesję.