Konsepter
Noen få ideer forklarer nesten alt i Usher: hvor ting ligger, hvem som utsteder tokener, hvor folk logger på, og hvor lenge hvert token varer.
Arbeidsområder, prosjekter og miljøer
- Et arbeidsområde er teamet eller bedriften din i Usher Console. Medlemmene og revisjonsloggen hører til det.
- Et prosjekt er ett produkt: nettappen din eller en partnerportal. Et arbeidsområde kan ha mange.
- Et miljø er én kjørende kopi av et prosjekt, vanligvis development og production. Det er i miljøene folk, apper, nøkler og innstillinger ligger.
Arbeidsområde · Acme Ltd
Prosjekt · Web
- development · wise-otter-42
- production · acme
Prosjekt · Partnerportal
- development · calm-heron-17
- production · acme-partners
Miljøer deler ingenting som betyr noe. Hvert har sitt eget Postgres-skjema, sine egne signeringsnøkler og sine egne hemmeligheter forseglet under sin egen datanøkkel. En person som registrerer seg i development, finnes ikke i production, og et token fra det ene kan aldri verifiseres med nøklene til det andre.
En administrator i arbeidsområdet kan slette et prosjekt nederst i Oversikt for prosjektet, etter å ha skrevet inn navnet på det. Alle miljøene i det forsvinner på én gang: folk, apper, nøkler og innstillinger i dem, og alle økter og tokener de har gitt ut. Adressene deres slutter å svare og deles aldri ut igjen, så en app som fortsatt stoler på en av dem, ikke kan lures av noen andres prosjekt.
Utstedere
Hvert miljø er sin egen OpenID Connect-utsteder, på sin egen vert på leietakerdomenet:
https://<handle>.usherid.com- Produksjonsmiljøer har et kortnavn du velger selv: 3 til 32 små bokstaver, sifre og enkeltstående bindestreker, for eksempel navnet på bedriften din. Et kortnavn som har vært i bruk, deles aldri ut igjen.
- Utviklingsmiljøer får et tilfeldig kortnavn, som
wise-otter-42, som ingen vil forveksle med en merkevare.
Utstederen ligger fast fra miljøet opprettes, fordi hvert token den signerer, navngir den i iss, og hver app som stoler på den, sjekker den verdien.
Leietakerdomenet er et annet registrerbart domene enn Ushers eget (usheridentity.com), så en kundes påloggingssider er aldri på samme nettsted (same-site) som Usher Console, og informasjonskapslene gjelder bare for verten: en nettleser sender et miljøs informasjonskapsler bare til det miljøet.
Lobbyen
Lobbyen er påloggingssiden hvert miljø har på utstederen sin. Appen din sender folk dit; den logger dem på og sender dem tilbake.
- Den viser alltid navnet på appen personen skal til, i merket «Fortsetter til».
- Den tilbyr bare metodene miljøet tillater: passnøkler, koder på e-post, magiske lenker, sosiale kontoer (Google, GitHub, Microsoft, Apple) og passord.
- Den kan kreve et andre trinn: en autentiseringsapp (med reservekoder) eller en passnøkkel.
- Den kan være åpen for alle, eller begrenset til en gjesteliste med adresser og domener.
Den ser lik ut uansett hvilket produkt som sendte personen. Det er med vilje: folk lærer hvordan en ekte Lobby ser ut, og merker det når en side ikke er det.
Usher-kontoer
De fleste miljøer har sine egne brukere. Usher-kontoer er annerledes: én konto som logger en person på alle apper som tilbyr Fortsett med Usher. Folk administrerer sin på account.usheridentity.com.
Tokener og levetider
| Token | Standard | Kan settes til | Hva det er til |
|---|---|---|---|
| Autorisasjonskode | 5 minutter | Fast | Byttes én gang mot tokener. Til engangsbruk. |
| ID-token | 10 minutter | 1 til 60 minutter | Forteller appen din hvem som logget på. Ikke for å kalle API-er. |
| Tilgangstoken | 10 minutter | 1 til 60 minutter | Sendes til API-et ditt, som sjekker det. |
| Oppdateringstoken | 30 dager | 1 til 90 dager | Henter nye tilgangstokener. Roteres ved hver bruk. Krever offline_access. |
| Maskintilgangstoken | 15 minutter | 1 til 60 minutter | For client_credentials: servere uten en person bak. |
| Kode på e-post, magisk lenke | 10 minutter | Fast | Én pålogging. En kode gir tre forsøk. |
Økter i Lobbyen har også levetider: en økt avsluttes etter 7 dager uten bruk (1 til 30), og etter 30 dager totalt (1 til 90). Å endre noe sensitivt, som en e-postadresse, krever en pålogging fra de siste 10 minuttene.
Signeringsnøkler
Tokener signeres med RS256 som standard; et miljø kan bruke ES256 eller EdDSA i stedet. De offentlige nøklene publiseres på miljøets jwks_uri, så bibliotekene dine henter dem, og plukker opp nye når nøklene roteres.
Omfang
| Omfang | Hva appen din får |
|---|---|
openid | Påkrevd. Et ID-token med personens sub. |
profile | Navnet og bildet deres. |
email | E-postadressen deres, og om den er bekreftet. |
offline_access | Et oppdateringstoken, så de forblir pålogget. |