Concepten
Met een paar ideeën is bijna alles in Usher te verklaren: waar dingen staan, wie tokens uitgeeft, waar mensen inloggen en hoe lang elk token geldig is.
Werkruimten, projecten en omgevingen
- Een werkruimte is je team of bedrijf in Usher Console. De leden en het auditlog horen bij de werkruimte.
- Een project is één product: je webapp, of een partnerportaal. Een werkruimte kan er veel bevatten.
- Een omgeving is één draaiende kopie van een project, meestal ontwikkeling en productie. In omgevingen staan de mensen, applicaties, sleutels en instellingen.
Werkruimte · Acme Ltd
Project · Web
- development · wise-otter-42
- production · acme
Project · Partnerportaal
- development · calm-heron-17
- production · acme-partners
Omgevingen delen niets wat ertoe doet. Elke omgeving heeft een eigen Postgres-schema, eigen ondertekeningssleutels en eigen geheimen, verzegeld onder een eigen gegevenssleutel. Iemand die zich in ontwikkeling registreert, bestaat niet in productie, en een token uit de ene omgeving kan nooit worden geverifieerd met de sleutels van de andere.
Een beheerder van de werkruimte kan een project verwijderen onderaan het Overzicht van dat project, na het intypen van de naam. Alle omgevingen erin verdwijnen tegelijk: hun mensen, applicaties, sleutels en instellingen, en elke sessie en elk token die ze hebben uitgegeven. Hun adressen reageren niet meer en worden nooit opnieuw uitgegeven, zodat een app die er nog een vertrouwt, niet kan worden misleid door het project van iemand anders.
Issuers
Elke omgeving is een eigen OpenID Connect-issuer, op een eigen host op het tenantdomein:
https://<handle>.usherid.com- Productieomgevingen hebben een handle die je zelf kiest: 3 tot 32 kleine letters, cijfers en losse koppeltekens, zoals de naam van je bedrijf. Een handle die eenmaal is gebruikt, wordt nooit opnieuw uitgegeven.
- Ontwikkelomgevingen krijgen een willekeurige handle, zoals
wise-otter-42, die niemand voor een merk zal aanzien.
De issuer ligt vast zodra de omgeving is aangemaakt, omdat elk token dat de omgeving ondertekent de issuer noemt in iss, en elke app die de omgeving vertrouwt die waarde controleert.
Het tenantdomein is een ander registreerbaar domein dan dat van Usher zelf (usheridentity.com), dus de inlogpagina’s van een klant zijn nooit same-site met Usher Console, en cookies zijn host-only: een browser stuurt de cookies van een omgeving alleen naar die omgeving.
De Lobby
De Lobby is de inlogpagina die elke omgeving host op haar issuer. Je app stuurt mensen daarheen; de Lobby laat ze inloggen en stuurt ze terug.
- Noemt altijd de app waar iemand naartoe gaat, in het label ‘Verder naar’.
- Biedt alleen de methoden die de omgeving toestaat: toegangssleutels, codes per e-mail, magic links, sociale accounts (Google, GitHub, Microsoft, Apple) en wachtwoorden.
- Kan een tweede factor verplicht stellen: een authenticator-app (met back-upcodes) of een toegangssleutel.
- Kan voor iedereen openstaan, of beperkt zijn tot een gastenlijst van adressen en domeinen.
De Lobby ziet er hetzelfde uit, welk product iemand ook heeft gestuurd. Dat is bewust: mensen leren hoe een echte Lobby eruitziet, en merken het als een pagina er geen is.
Usher-accounts
De meeste omgevingen hebben hun eigen gebruikers. Usher-accounts zijn anders: één account waarmee iemand inlogt bij elke app die ‘Ga door met Usher’ aanbiedt. Mensen beheren hun account op account.usheridentity.com.
Tokens en geldigheidsduur
| Token | Standaard | Instelbaar op | Waarvoor het dient |
|---|---|---|---|
| Autorisatiecode | 5 minuten | Vast | Wordt één keer ingeruild voor tokens. Eenmalig te gebruiken. |
| ID-token | 10 minuten | 1 tot 60 minuten | Vertelt je app wie er is ingelogd. Niet om API’s mee aan te roepen. |
| Toegangstoken | 10 minuten | 1 tot 60 minuten | Gaat naar je API, die het controleert. |
| Vernieuwingstoken | 30 dagen | 1 tot 90 dagen | Haalt nieuwe toegangstokens op. Roteert bij elk gebruik. Vereist offline_access. |
| Machinetoegangstoken | 15 minuten | 1 tot 60 minuten | Voor client_credentials: servers zonder persoon erachter. |
| Code per e-mail, magic link | 10 minuten | Vast | Eén keer inloggen. Een code mag drie keer worden geprobeerd. |
Sessies in de Lobby hebben ook een geldigheidsduur: een sessie eindigt na 7 dagen zonder gebruik (1 tot 30), en na 30 dagen in totaal (1 tot 90). Wie iets gevoeligs wil wijzigen, zoals een e-mailadres, moet in de afgelopen 10 minuten zijn ingelogd.
Ondertekeningssleutels
Tokens worden standaard ondertekend met RS256; een omgeving kan in plaats daarvan ES256 of EdDSA gebruiken. De openbare sleutels worden gepubliceerd op de jwks_uri van de omgeving, zodat je bibliotheken ze ophalen en nieuwe sleutels oppikken wanneer er wordt geroteerd.
Scopes
| Scope | Wat je app ontvangt |
|---|---|
openid | Verplicht. Een ID-token met de sub van de persoon. |
profile | Naam en foto. |
email | E-mailadres, en of dat is geverifieerd. |
offline_access | Een vernieuwingstoken, zodat iemand ingelogd blijft. |