Begreber
Nogle få idéer forklarer næsten alt i Usher: hvor tingene bor, hvem der udsteder tokens, hvor folk logger ind, og hvor længe hvert token gælder.
Arbejdsområder, projekter og miljøer
- Et arbejdsområde er dit team eller din virksomhed i Usher Console. Dets medlemmer og dets revisionslog hører til det.
- Et projekt er ét produkt: din webapp eller en partnerportal. Et arbejdsområde kan rumme mange.
- Et miljø er én kørende kopi af et projekt, typisk udvikling og produktion. Det er i miljøerne, at personer, applikationer, nøgler og indstillinger bor.
Arbejdsområde · Acme Ltd
Projekt · Web
- development · wise-otter-42
- production · acme
Projekt · Partnerportal
- development · calm-heron-17
- production · acme-partners
Miljøer deler intet, der betyder noget. Hvert har sit eget Postgres-skema, sine egne signeringsnøgler og sine egne hemmeligheder, forseglet under sin egen datanøgle. En person, der tilmelder sig i udvikling, findes ikke i produktion, og et token fra det ene kan aldrig verificeres med det andets nøgler.
En administrator af arbejdsområdet kan slette et projekt nederst i dets Oversigt, efter at have skrevet projektets navn. Alle miljøer i det forsvinder på én gang: deres personer, applikationer, nøgler og indstillinger og alle sessioner og tokens, de har udstedt. Deres adresser holder op med at svare og gives aldrig ud igen, så en app, der stadig stoler på en af dem, ikke kan narres af en andens projekt.
Udstedere
Hvert miljø er sin egen OpenID Connect-udsteder med sin egen host på lejerdomænet:
https://<handle>.usherid.com- Produktionsmiljøer har et handle, du selv vælger: 3 til 32 små bogstaver, cifre og enkeltstående bindestreger, f.eks. din virksomheds navn. Et handle, der én gang er brugt, gives aldrig ud igen.
- Udviklingsmiljøer får et tilfældigt handle, f.eks.
wise-otter-42, som ingen vil forveksle med et brand.
Udstederen ligger fast, fra miljøet bliver oprettet, fordi hvert token, den signerer, nævner den i iss, og hver app, der stoler på den, tjekker den værdi.
Lejerdomænet er et andet registrerbart domæne end Ushers eget (usheridentity.com), så en kundes loginsider er aldrig same-site med Usher Console, og cookies er host-only: en browser sender kun et miljøs cookies til netop det miljø.
Lobbyen
Lobbyen er den loginside, hvert miljø hoster hos sin udsteder. Din app sender folk derhen; Lobbyen logger dem ind og sender dem tilbage.
- Den nævner altid den app, personen er på vej til, i mærkatet »Fortsætter til«.
- Den tilbyder kun de metoder, miljøet tillader: adgangsnøgler, koder via e-mail, magiske links, sociale konti (Google, GitHub, Microsoft, Apple) og adgangskoder.
- Den kan kræve en anden faktor: en godkendelsesapp (med backupkoder) eller en adgangsnøgle.
- Den kan være åben for alle eller begrænset til en gæsteliste med adresser og domæner.
Den ser ens ud, uanset hvilket produkt der sendte personen. Det er med vilje: folk lærer, hvordan en rigtig Lobby ser ud, og opdager det, når en side ikke er det.
Usher-konti
De fleste miljøer har deres egne brugere. Usher-konti er anderledes: én konto, der logger en person ind på alle apps, der tilbyder Fortsæt med Usher. Folk administrerer deres konto på account.usheridentity.com.
Tokens og levetider
| Token | Standard | Kan sættes til | Hvad det bruges til |
|---|---|---|---|
| Autorisationskode | 5 minutter | Fast | Byttes én gang til tokens. Til engangsbrug. |
| Id-token | 10 minutter | 1 til 60 minutter | Fortæller din app, hvem der loggede ind. Ikke til at kalde API’er. |
| Adgangstoken | 10 minutter | 1 til 60 minutter | Sendes til dit API, som tjekker det. |
| Opdateringstoken | 30 dage | 1 til 90 dage | Henter nye adgangstokens. Roteres ved hver brug. Kræver offline_access. |
| Maskinadgangstoken | 15 minutter | 1 til 60 minutter | Til client_credentials: servere uden en person bag. |
| Kode via e-mail, magisk link | 10 minutter | Fast | Ét enkelt login. En kode giver tre forsøg. |
Sessioner i Lobbyen har også levetider: en session slutter efter 7 dage uden brug (1 til 30) og efter 30 dage i alt (1 til 90). Vil du ændre noget følsomt, f.eks. en e-mailadresse, kræver det et login inden for de seneste 10 minutter.
Signeringsnøgler
Tokens signeres som standard med RS256; et miljø kan bruge ES256 eller EdDSA i stedet. De offentlige nøgler offentliggøres på miljøets jwks_uri, så dine biblioteker henter dem og får de nye med, når nøglerne roteres.
Scopes
| Scope | Hvad din app modtager |
|---|---|
openid | Påkrævet. Et id-token med personens sub. |
profile | Personens navn og billede. |
email | Personens e-mailadresse, og om den er bekræftet. |
offline_access | Et opdateringstoken, så personen forbliver logget ind. |