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
Ś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:
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
| Token | Domyślnie | Można ustawić | Do czego służy |
|---|---|---|---|
| Kod autoryzacji | 5 minut | Stała wartość | Wymieniany raz na tokeny. Jednorazowy. |
| Token ID | 10 minut | Od 1 do 60 minut | Mówi Twojej aplikacji, kto się zalogował. Nie służy do wywoływania API. |
| Token dostępu | 10 minut | Od 1 do 60 minut | Wysyłany do Twojego API, które go sprawdza. |
| Token odświeżania | 30 dni | Od 1 do 90 dni | Pozwala uzyskać nowe tokeny dostępu. Rotowany przy każdym użyciu. Wymaga offline_access. |
| Maszynowy token dostępu | 15 minut | Od 1 do 60 minut | Dla client_credentials: serwery, za którymi nie stoi żaden człowiek. |
| Kod wysłany e-mailem, magiczny link | 10 minut | Stał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
| Zakres | Co otrzymuje Twoja aplikacja |
|---|---|
openid | Wymagany. Token ID z identyfikatorem sub danej osoby. |
profile | Imię i nazwisko oraz zdjęcie. |
email | Adres e-mail i informację, czy został zweryfikowany. |
offline_access | Token odświeżania, który podtrzymuje sesję. |