Hoppa till innehållet

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.

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.

Fortsätter till
Tema
  • 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.

Usher IdentityUsher IdentityFortsätter till Acme Notes

Välkommen tillbaka.

Logga in med ditt konto hos Usher Identity.

Ny här?

Skyddas av Usher Identity

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.

Uppdateringstokens, samtycke och scopes ingår.
  • 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.

  1. 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
  2. 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 Acme

    Välkommen tillbaka.

    Använd en lösennyckel
    Skicka en kod till min e-post
  3. 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
  4. 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…
  5. 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

Miljö

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 · app/page.tsxKommer med SDK:t
// 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.

Från en utcheckning av Usher Identity
# 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 migrations

Den 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.