Identitet för dina appar, med öppna standarder
Visar dig in.
Ett konto. Alla dörrar.
Usher Identity loggar in människor i dina appar med OpenID Connect och OAuth 2.1: lösennycklar, koder, social inloggning och organisationer, och varje miljö hålls åtskild från alla andra.
Gratis att komma igång. Går även att köra på dina egna servrar.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
Lobbyn
En inloggningssida som välkomnar i stället för att förhöra.
Lobbyn är inloggningssidan som Usher Identity tillhandahåller för din app. Den talar alltid om vart personen är på väg, och den ser likadan ut oavsett vilken app som skickade dit dem, så att människor lär sig att lita på den.
- Nämner varje gång produkten du är på väg till.
- Lösennycklar, koder via e-post och magiska länkar, och lösenord bara om du vill.
- Samma lugna sida, ljus eller mörk, i varje produkt.
Det här är en fungerande kopia av Lobbyn. Den körs på den här sidan, skickar ingenting och loggar inte in någon.
Standarder, inte inlåsning
Talar de protokoll din stack redan kan.
Usher Identity är först och främst en OpenID Connect-leverantör. Använd vårt SDK när det passar dig, eller valfritt OIDC-bibliotek i valfritt språk. Om du någon gång lämnar oss behöver dina appar inte ändra hur de loggar in människor.
- OIDC Core · Discovery
OpenID Connect
Ett discovery-dokument per miljö, ID-tokens och userinfo. Alla certifierade klientbibliotek fungerar.
- Endast S256
OAuth 2.1 med PKCE
Auktoriseringskod med PKCE för varje klient, publik eller konfidentiell. Inget implicit flöde, inga lösenord till tokenslutpunkten.
- RS256 · ES256 · EdDSA
JWKS och nyckelrotation
Varje miljö signerar med egna nycklar, publicerade på dess jwks_uri. Rotera dem utan att inloggade personer påverkas.
- RFC 7662 · RFC 7009
Introspektion och återkallning
Fråga om en token fortfarande gäller, eller avsluta den direkt. Usher Identity kontrollerar sina egna sessioner vid varje förfrågan, så när du avslutar en gäller det omedelbart.
RP-initierad utloggning och back-channel-utloggning
Logga ut från din app, eller låt Usher Identity meddela varje app när en session avslutas någonstans.
- RFC 9449
DPoP
Bind tokens till en nyckel som klienten har, så att en stulen token inte går att använda på egen hand.
- WebAuthn
Lösennycklar
Inbyggt från början, inte ett tillägg. Människor loggar in med ett fingeravtryck, ansiktet eller en säkerhetsnyckel, och det finns inget att nätfiska.
- TOTP
Autentiseringsappar
Tidsbaserade koder från valfri autentiseringsapp, med reservkoder. Gör en andra faktor frivillig eller obligatorisk.
Magiska länkar
Ett tryck i inkorgen. Kortlivade, för engångsbruk och knutna till miljön som skickade dem.
Koder via e-post
Sex siffror, för den som loggar in på en enhet och läser e-post på en annan.
Social inloggning
Google, GitHub, Microsoft och Apple. Ett konto länkas bara när dess e-postadress har bekräftats.
Organisationer och team
Medlemmar, roller och inbjudningar för företagen som använder din app.
- Kommer snart
SAML
Enkel inloggning med dina kunders identitetsleverantörer för personal.
- Kommer snart
SCIM
Etablering och avetablering av användare från dina kunders kataloger.
Så går en inloggning till
Fem steg, och alla följer standarden.
Det här är OpenID Connects auktoriseringskodflöde med PKCE, samma flöde som varje seriös identitetsleverantör talar. Scrolla igenom det.
- 01
Din app skickar dem till Lobbyn.
När någon väljer Fortsätt med Usher Identity omdirigerar din app dem till miljöns auktoriseringsslutpunkt, med en PKCE-utmaning och ett state-värde som appen kontrollerar senare.
GET acme.usherid.com/api/auth/oauth2/authorize ?response_type=code &client_id=acme_web &redirect_uri=https://app.acme.example/callback &scope=openid profile email offline_access &state=k3Jx… &code_challenge=E9Mel…cM &code_challenge_method=S256
- 02
De loggar in, på sitt sätt.
En lösennyckel, en kod via e-post, en magisk länk, ett socialt konto eller ett lösenord: Lobbyn erbjuder bara det som din miljö tillåter, och talar alltid om vilken app de är på väg till.
Usher IdentityUsher IdentityFortsätter till AcmeVälkommen tillbaka.
Använd en lösennyckelSkicka en kod till min e-post - 03
De godkänner att dela.
Första gången ser människor vad din app ber om (deras profil, deras e-postadress, att förbli inloggade) och godkänner det en gång.
Acme vill:
- Se ditt namn och din bild
- Se din e-postadress
- Hålla dig inloggad
AvbrytTillåt - 04
Usher Identity lämnar tillbaka en kod.
Webbläsaren återvänder till din omdirigerings-URI med en engångskod som gäller i fem minuter, och det state-värde du skickade, som din app kontrollerar.
302 Found Location: https://app.acme.example/callback ?code=SplxlOBeZQQYbYS6WxSbIA &state=k3Jx…
- 05
Din app byter den mot tokens.
Din server skickar koden och PKCE-verifieraren till tokenslutpunkten. Tillbaka kommer en ID-token som säger vem personen är, en åtkomsttoken för ditt API och en uppdateringstoken för att förbli inloggad.
POST acme.usherid.com/api/auth/oauth2/token grant_type=authorization_code&code=Splx… &code_verifier=dBjftJeZ4CVP… { "token_type": "Bearer", "access_token": "eyJhbGciOiJSUzI1NiIs…", "id_token": "eyJhbGciOiJSUzI1NiIs…", "refresh_token": "8xLOxBtZp8…", "expires_in": 600 }
Isolering från grunden
Varje miljö är en egen byggnad.
Dina produktions- och utvecklingsmiljöer, och alla andra kunders, delar ingenting som spelar roll. Ett misstag i en miljö kan inte läsa från, signera för eller logga in i en annan.
- Ett eget Postgres-schema
- Inte en kundkolumn i en delad tabell, utan ett schema som skapats för miljön och inget annat.
- Egna signeringsnycklar
- Tokens från en miljö kan aldrig verifieras mot en annan miljös nycklar.
- Egna förseglade hemligheter
- Förseglade med miljöns egen datanyckel, som i sin tur är inkapslad av en huvudnyckel.
- En egen värd
- Utfärdarna ligger på en annan domän än Ushers webbplats och Console, med cookies som bara gäller för värden.
usheridentity.com
Webbplatsen, Usher Identity Console, konton hos Usher Identity
*.usherid.com
En utfärdare per miljö, på en separat domän
Användare, sessioner och tokens finns i ett schema som skapats för den här miljön. Frågor körs mot det schemat, aldrig mot en delad tabell med en kundkolumn.
Kopiera den förseglade Google-klienthemligheten från Acme produktion till Northwind produktion.
För utvecklare
Din första inloggning, på tre sätt.
Lägg in SDK:t när det kommer, använd det OIDC-bibliotek du redan litar på, eller börja med att läsa discovery-dokumentet. Under ytan är det samma protokoll.
// app/layout.tsx
import { UsherProvider } from '@usher/nextjs'
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<UsherProvider>{children}</UsherProvider>
</body>
</html>
)
}
// app/page.tsx
import { SignIn, UserButton, currentUser } from '@usher/nextjs'
export default async function Page() {
const user = await currentUser()
return user ? <UserButton /> : <SignIn />
}Kör det själv
Dina servrar, dina nycklar.
Använd Usher Identity som tjänst, eller kör samma plattform på dina egna servrar, med egna nycklar och en egen databas.
Docker
En enda Compose-fil: apparna, Postgres, Valkey, Caddy i kanten och den utgående proxyn. Containrarna körs utan nya privilegier och med borttagna capabilities.
Ubuntu
En vanlig Ubuntu-server räcker. Caddy terminerar TLS, och hemligheter är filer som lämnas till containrarna, aldrig inbakade i avbildningar.
Postgres
Postgres rymmer allt, ett schema per miljö. Postgres och Valkey ligger på ett nätverk utan väg ut till internet.
# on an Ubuntu server with Docker Engine and the Compose plugin
bash infra/scripts/setup-env.sh --prod \
--domain usher.example --tenant-domain usherid.example
docker compose -f compose.yaml -f compose.prod.yaml \
--profile core --profile apps --profile edge up -d --wait
pnpm db:migrate # applies the database migrationsDen fullständiga guiden för egen drift är på väg. Kommandona ovan visar hur den kommer att se ut.
Visa in dina användare.
Skapa en arbetsyta och ett projekt, så får din första miljö en egen utfärdare, egna nycklar och en egen Lobby.
Logga in en gång. Välkommen överallt.