Begrepp
Några få idéer förklarar nästan allt i Usher: var saker finns, vem som utfärdar tokens, var människor loggar in och hur länge varje token gäller.
Arbetsytor, projekt och miljöer
- En arbetsyta är ditt team eller företag i Usher Console. Dess medlemmar och dess granskningslogg hör till den.
- Ett projekt är en produkt: din webbapp eller en partnerportal. En arbetsyta kan rymma många.
- En miljö är en körande kopia av ett projekt, oftast utveckling och produktion. Det är i miljöerna som människor, appar, nycklar och inställningar finns.
Arbetsyta · Acme AB
Projekt · Webb
- development · wise-otter-42
- production · acme
Projekt · Partnerportal
- development · calm-heron-17
- production · acme-partners
Miljöer delar ingenting som spelar roll. Var och en har ett eget Postgres-schema, egna signeringsnycklar och egna hemligheter förseglade under en egen datanyckel. En person som registrerar sig i utveckling finns inte i produktion, och en token från den ena kan aldrig verifieras med den andras nycklar.
En administratör för arbetsytan kan radera ett projekt längst ned på dess Översikt, efter att ha skrivit in projektets namn. Alla miljöer i det försvinner på en gång: deras människor, appar, nycklar och inställningar, och varje session och token de har utfärdat. Deras adresser slutar svara och delas aldrig ut igen, så att en app som fortfarande litar på en av dem inte kan luras av någon annans projekt.
Utfärdare
Varje miljö är sin egen OpenID Connect-utfärdare, på en egen värd på kunddomänen:
https://<handle>.usherid.com- Produktionsmiljöer har en handle som du väljer: 3 till 32 små bokstäver, siffror och enstaka bindestreck, till exempel ditt företags namn. En handle som en gång har använts delas aldrig ut igen.
- Utvecklingsmiljöer får en slumpmässig handle, till exempel
wise-otter-42, som ingen kommer att förväxla med ett varumärke.
Utfärdaren bestäms när miljön skapas, eftersom varje token den signerar anger den i iss, och varje app som litar på den kontrollerar det värdet.
Kunddomänen är en annan registrerbar domän än Ushers egen (usheridentity.com), så en kunds inloggningssidor är aldrig same-site med Usher Console, och cookies gäller bara för värden: en webbläsare skickar en miljös cookies till den miljön och ingen annan.
Lobbyn
Lobbyn är inloggningssidan som varje miljö står värd för hos sin utfärdare. Din app skickar dit människor; Lobbyn loggar in dem och skickar tillbaka dem.
- Den nämner alltid appen personen är på väg till, i etiketten ”Fortsätter till”.
- Den erbjuder bara de metoder som miljön tillåter: lösennycklar, koder via e-post, magiska länkar, sociala konton (Google, GitHub, Microsoft, Apple) och lösenord.
- Den kan kräva en andra faktor: en autentiseringsapp (med reservkoder) eller en lösennyckel.
- Den kan vara öppen för alla eller begränsad till en gästlista med adresser och domäner.
Den ser likadan ut oavsett vilken produkt som skickade dit personen. Det är avsiktligt: människor lär sig hur en riktig Lobby ser ut och märker när en sida inte är det.
Usher-konton
De flesta miljöer har egna användare. Usher-konton är annorlunda: ett enda konto som en person loggar in med på varje app som erbjuder Fortsätt med Usher. Människor hanterar sitt konto på account.usheridentity.com.
Tokens och livslängder
| Token | Standard | Kan ställas in till | Vad den används till |
|---|---|---|---|
| Auktoriseringskod | 5 minuter | Fast | Byts en gång mot tokens. Engångs. |
| ID-token | 10 minuter | 1 till 60 minuter | Talar om för din app vem som loggade in. Inte för att anropa API:er. |
| Åtkomsttoken | 10 minuter | 1 till 60 minuter | Skickas till ditt API, som kontrollerar den. |
| Uppdateringstoken | 30 dagar | 1 till 90 dagar | Hämtar nya åtkomsttokens. Roteras vid varje användning. Kräver offline_access. |
| Maskinåtkomsttoken | 15 minuter | 1 till 60 minuter | För client_credentials: servrar utan någon person bakom. |
| Kod via e-post, magisk länk | 10 minuter | Fast | En enda inloggning. En kod kan provas tre gånger. |
Sessioner i Lobbyn har också en livslängd: en session avslutas efter 7 dagar utan användning (1 till 30) och efter 30 dagar totalt (1 till 90). Att ändra något känsligt, som en e-postadress, kräver en inloggning från de senaste 10 minuterna.
Signeringsnycklar
Tokens signeras som standard med RS256; en miljö kan använda ES256 eller EdDSA i stället. De publika nycklarna publiceras på miljöns jwks_uri, så att dina bibliotek hämtar dem och plockar upp nya när nycklarna roteras.
Scopes
| Scope | Vad din app får |
|---|---|
openid | Krävs. En ID-token med personens sub. |
profile | Personens namn och bild. |
email | Personens e-postadress, och om den är verifierad. |
offline_access | En uppdateringstoken, så att personen förblir inloggad. |