Konzepte
Ein paar Ideen erklären fast alles an Usher: wo die Dinge liegen, wer Tokens ausstellt, wo sich Menschen anmelden und wie lange jedes Token gilt.
Workspaces, Projekte und Umgebungen
- Ein Workspace ist dein Team oder Unternehmen in Usher Console. Mitglieder und Audit-Log gehören zum Workspace.
- Ein Projekt ist ein Produkt: deine Web-App oder ein Partnerportal. Ein Workspace kann viele davon enthalten.
- Eine Umgebung ist eine laufende Instanz eines Projekts, meist Entwicklung (
development) und Produktion (production). In Umgebungen leben Personen, Anwendungen, Schlüssel und Einstellungen.
Workspace · Acme GmbH
Projekt · Web
- development · wise-otter-42
- production · acme
Projekt · Partnerportal
- development · calm-heron-17
- production · acme-partners
Umgebungen teilen nichts, worauf es ankommt. Jede hat ihr eigenes Postgres-Schema, eigene Signaturschlüssel und eigene Secrets, versiegelt unter ihrem eigenen Datenschlüssel. Wer sich in der Entwicklungsumgebung registriert, existiert in der Produktionsumgebung nicht, und ein Token aus der einen lässt sich nie mit den Schlüsseln der anderen verifizieren.
Admins eines Workspace können ein Projekt am Ende seiner Übersicht löschen, nachdem sie seinen Namen eingegeben haben. Alle Umgebungen darin verschwinden auf einmal: ihre Personen, Anwendungen, Schlüssel und Einstellungen und jede Sitzung und jedes Token, das sie ausgegeben haben. Ihre Adressen antworten nicht mehr und werden nie wieder vergeben, damit eine App, die einer davon noch vertraut, nicht vom Projekt eines anderen getäuscht werden kann.
Issuer
Jede Umgebung ist ein eigener OpenID-Connect-Issuer, unter einem eigenen Host auf der Mandanten-Domain:
https://<handle>.usherid.com- Produktionsumgebungen haben ein Handle, das du wählst: 3 bis 32 Kleinbuchstaben, Ziffern und einzelne Bindestriche, etwa der Name deines Unternehmens. Ein einmal genutztes Handle wird nie wieder vergeben.
- Entwicklungsumgebungen bekommen ein zufälliges Handle wie
wise-otter-42, das niemand mit einer Marke verwechselt.
Der Issuer steht fest, sobald die Umgebung angelegt ist, denn jedes Token, das er signiert, nennt ihn in iss, und jede App, die ihm vertraut, prüft diesen Wert.
Die Mandanten-Domain ist eine andere registrierbare Domain als Ushers eigene (usheridentity.com). Die Anmeldeseiten eines Kunden sind deshalb nie same-site mit Usher Console, und Cookies sind Host-only: Ein Browser sendet die Cookies einer Umgebung nur an diese eine Umgebung.
Die Lobby
Die Lobby ist die Anmeldeseite, die jede Umgebung unter ihrem Issuer bereitstellt. Deine App schickt Menschen dorthin; die Lobby meldet sie an und schickt sie zurück.
- Sie nennt immer die App, zu der es weitergeht, im Chip „Weiter zu“.
- Sie bietet nur die Methoden an, die die Umgebung erlaubt: Passkeys, Codes per E-Mail, Magic Links, Social Login (Google, GitHub, Microsoft, Apple) und Passwörter.
- Sie kann einen zweiten Faktor verlangen: eine Authenticator-App (mit Backup-Codes) oder einen Passkey.
- Sie kann allen offenstehen oder auf eine Gästeliste aus Adressen und Domains beschränkt sein.
Sie sieht gleich aus, egal welches Produkt jemanden hergeschickt hat. Das ist Absicht: Menschen lernen, wie eine echte Lobby aussieht, und merken, wenn eine Seite keine ist.
Usher-Konten
Die meisten Umgebungen haben ihre eigenen Nutzer. Usher-Konten sind anders: ein einziges Konto, mit dem sich eine Person bei jeder App anmeldet, die „Mit Usher fortfahren“ anbietet. Ihr Konto verwalten die Menschen unter account.usheridentity.com.
Tokens und Laufzeiten
| Token | Standard | Einstellbar auf | Wofür es da ist |
|---|---|---|---|
| Autorisierungscode | 5 Minuten | Fest | Wird einmal gegen Tokens getauscht. Nur einmal verwendbar. |
| ID-Token | 10 Minuten | 1 bis 60 Minuten | Sagt deiner App, wer sich angemeldet hat. Nicht für API-Aufrufe. |
| Access-Token | 10 Minuten | 1 bis 60 Minuten | Geht an deine API, die es prüft. |
| Refresh-Token | 30 Tage | 1 bis 90 Tage | Holt neue Access-Tokens. Wird bei jeder Verwendung rotiert. Braucht offline_access. |
| Machine-Access-Token | 15 Minuten | 1 bis 60 Minuten | Für client_credentials: Server, hinter denen keine Person steht. |
| Code per E-Mail, Magic Link | 10 Minuten | Fest | Für eine einzelne Anmeldung. Ein Code erlaubt drei Versuche. |
Auch Sitzungen in der Lobby haben Laufzeiten: Eine Sitzung endet nach 7 Tagen ohne Nutzung (1 bis 30) und nach insgesamt 30 Tagen (1 bis 90). Wer etwas Sensibles ändern will, etwa eine E-Mail-Adresse, muss sich in den letzten 10 Minuten angemeldet haben.
Signaturschlüssel
Tokens werden standardmäßig mit RS256 signiert; eine Umgebung kann stattdessen ES256 oder EdDSA verwenden. Die öffentlichen Schlüssel werden unter der jwks_uri der Umgebung veröffentlicht. Deine Bibliotheken holen sie von dort und übernehmen neue, sobald Schlüssel rotiert werden.
Scopes
| Scope | Was deine App erhält |
|---|---|
openid | Pflicht. Ein ID-Token mit dem sub der Person. |
profile | Ihren Namen und ihr Bild. |
email | Ihre E-Mail-Adresse und ob sie bestätigt ist. |
offline_access | Ein Refresh-Token, damit sie angemeldet bleibt. |