Gå til indholdet

Identitet til dine apps, bygget på åbne standarder

Viser dig ind.

Én konto. Alle døre.

Usher Identity logger folk ind på dine apps med OpenID Connect og OAuth 2.1: adgangsnøgler, koder, login med sociale konti og organisationer – og hvert miljø holdes adskilt fra alle andre.

Gratis at komme i gang. Kører også på dine egne servere.

Lobbyen

En loginside, der byder velkommen – ikke forhører.

Lobbyen er den loginside, Usher Identity hoster til din app. Den siger altid, hvor personen er på vej hen, og den ser ens ud, uanset hvilken app der sendte dem, så folk lærer at stole på den.

Fortsætter til
Tema
  • Nævner hver gang det produkt, du er på vej til.
  • Adgangsnøgler, koder via e-mail og magiske links – og kun adgangskoder, hvis du vil have dem.
  • Den samme rolige side, lys eller mørk, i alle produkter.

Dette er en fungerende kopi af Lobbyen. Den kører på denne side, sender intet og logger ingen ind.

Usher IdentityUsher IdentityFortsætter til Acme Notes

Velkommen tilbage.

Log ind med din konto hos Usher Identity.

Ny her?

Beskyttet af Usher Identity

Standarder, ikke indlåsning

Taler de protokoller, din stak allerede kender.

Usher Identity er først og fremmest en OpenID Connect-udbyder. Brug vores SDK, når det passer dig, eller et hvilket som helst OIDC-bibliotek i et hvilket som helst sprog. Skifter du en dag, behøver dine apps ikke at ændre, hvordan de logger folk ind.

Opdateringstokens, samtykke og scopes er med.
  • OIDC Core · Discovery

    OpenID Connect

    Et discovery-dokument pr. miljø, id-tokens og userinfo. Ethvert certificeret klientbibliotek virker.

  • Kun S256

    OAuth 2.1 med PKCE

    Autorisationskode med PKCE for alle klienter, offentlige som fortrolige. Intet implicit flow og ingen adgangskoder til token-slutpunktet.

  • RS256 · ES256 · EdDSA

    JWKS og nøglerotation

    Hvert miljø signerer med sine egne nøgler, der offentliggøres på dets jwks_uri. Roter dem uden at forstyrre folk, der er logget ind.

  • RFC 7662 · RFC 7009

    Introspektion og tilbagekaldelse

    Spørg, om et token stadig er gyldigt, eller afslut det nu. Usher Identity tjekker sine egne sessioner ved hver anmodning, så det virker med det samme, når du afslutter en.

  • RP-initieret logout og back-channel-logout

    Log ud fra din app, eller lad Usher Identity give alle apps besked, når en session slutter, uanset hvor.

  • RFC 9449

    DPoP

    Bind tokens til en nøgle, som klienten har, så et stjålet token ikke kan bruges alene.

  • WebAuthn

    Adgangsnøgler

    Bygget ind fra starten, ikke sat på bagefter. Folk logger ind med et fingeraftryk, et ansigt eller en sikkerhedsnøgle, og der er intet at phishe.

  • TOTP

    Godkendelsesapps

    Tidsbaserede koder fra en hvilken som helst godkendelsesapp, med backupkoder. Gør en anden faktor valgfri eller påkrævet.

  • Magiske links

    Ét tryk fra indbakken. Kortlivede, til engangsbrug og bundet til det miljø, der sendte dem.

  • Koder via e-mail

    Seks cifre til folk, der logger ind på én enhed og læser e-mail på en anden.

  • Login med sociale konti

    Google, GitHub, Microsoft og Apple. En konto bliver kun knyttet til, når dens e-mail er bekræftet.

  • Organisationer og teams

    Medlemmer, roller og invitationer til de virksomheder, der bruger din app.

  • Kommer snart

    SAML

    Single sign-on med de identitetsudbydere, dine kunders medarbejdere bruger.

  • Kommer snart

    SCIM

    Oprettelse og fjernelse af brugere direkte fra dine kunders brugerkataloger.

Sådan foregår et login

Fem trin, og de er alle standard.

Dette er OpenID Connects autorisationskodeflow med PKCE – det samme flow, som enhver seriøs identitetsudbyder taler. Rul dig igennem det.

  1. 01

    Din app sender dem til Lobbyen.

    Når nogen vælger Fortsæt med Usher Identity, omdirigerer din app dem til dit miljøs autorisationsslutpunkt med en PKCE-udfordring og en state-værdi, som den tjekker senere.

    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 logger ind på deres måde.

    En adgangsnøgle, en kode via e-mail, et magisk link, en social konto eller en adgangskode: Lobbyen tilbyder kun det, dit miljø tillader, og siger altid, hvilken app de er på vej til.

    Usher IdentityUsher IdentityFortsætter til Acme

    Velkommen tilbage.

    Brug en adgangsnøgle
    Send mig en kode via e-mail
  3. 03

    De siger ja til at dele.

    Første gang ser folk, hvad din app beder om (deres profil, deres e-mail, at forblive logget ind), og siger ja én gang.

    Acme vil gerne:

    • Se dit navn og billede
    • Se din e-mailadresse
    • Holde dig logget ind
    AnnullerTillad
  4. 04

    Usher Identity giver en kode tilbage.

    Browseren vender tilbage til din omdirigerings-URI med en engangskode, der gælder i fem minutter, og den state, du sendte, som din app tjekker.

    302 Found
    Location: https://app.acme.example/callback
      ?code=SplxlOBeZQQYbYS6WxSbIA
      &state=k3Jx…
  5. 05

    Din app bytter den til tokens.

    Din server sender koden og PKCE-verifikatoren til token-slutpunktet. Tilbage kommer et id-token, der siger, hvem personen er, et adgangstoken til dit API og et opdateringstoken, så personen forbliver logget ind.

    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
    }

Isoleret fra grunden

Hvert miljø er en bygning for sig.

Dine produktions- og udviklingsmiljøer – og alle andre kunders – deler intet, der betyder noget. En fejl i ét miljø kan ikke læse fra, signere for eller logge ind i et andet.

Sit eget Postgres-skema
Ikke en lejerkolonne i en delt tabel, men et skema lavet til miljøet og intet andet.
Sine egne signeringsnøgler
Tokens fra ét miljø kan aldrig verificeres med et andet miljøs nøgler.
Sine egne forseglede hemmeligheder
Forseglet med miljøets egen datanøgle, som selv er pakket ind af en hovednøgle.
Sin egen host
Udstedere ligger på et andet domæne end Ushers websted og Console, med host-only-cookies.

usheridentity.com

Webstedet, Usher Identity Console, konti hos Usher Identity

*.usherid.com

Én udsteder pr. miljø, på et separat domæne

Miljø

Brugere, sessioner og tokens ligger i et skema, der er lavet til dette miljø. Forespørgsler kører mod det skema, aldrig mod en delt tabel med en lejerkolonne.

Kopier den forseglede Google-klienthemmelighed fra Acme produktion til Northwind produktion.

Til udviklere

Dit første login, på tre måder.

Sæt SDK’et ind, når det kommer, brug det OIDC-bibliotek, du allerede stoler på, eller start med at læse discovery-dokumentet. Nedenunder er det den samme protokol.

app/layout.tsx · app/page.tsxKommer med SDK’et
// 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 selv

Dine servere, dine nøgler.

Brug Usher Identity som en tjeneste, eller kør den samme platform på dine egne servere med dine egne nøgler og din egen database.

  • Docker

    Én Compose-fil: apps, Postgres, Valkey, Caddy som edge og egress-proxyen. Containerne kører uden nye rettigheder og med capabilities fjernet.

  • Ubuntu

    En almindelig Ubuntu-server er nok. Caddy afslutter TLS, og hemmeligheder er filer, der gives til containerne – de bliver aldrig bagt ind i images.

  • Postgres

    Postgres rummer det hele med ét skema pr. miljø. Postgres og Valkey står på et netværk uden rute til internettet.

Fra en lokal kopi af 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 fulde vejledning i selvhosting er på vej. Kommandoerne ovenfor viser, hvordan det kommer til at se ud.

Vis dine brugere ind.

Opret et arbejdsområde og et projekt, så får dit første miljø sin egen udsteder, sine egne nøgler og sin egen Lobby.

Log ind én gang. Velkommen overalt.