Ugrás a tartalomhoz

Identitás az appjaidhoz, nyílt szabványokra építve

Bekalauzol.

Egy fiók. Minden ajtó.

Az Usher Identity az OpenID Connect és az OAuth 2.1 szabvány szerint jelentkezteti be az embereket az appjaidba: jelkulcsok, kódok, közösségi bejelentkezés és szervezetek, és minden környezet szigorúan elkülönül a többitől.

Ingyen elkezdheted. A saját szervereiden is fut.

A Lobby

Bejelentkezési oldal, amely üdvözöl, nem vallat.

A Lobby az a bejelentkezési oldal, amelyet az Usher Identity az appodnak üzemeltet. Mindig kiírja, hová tart az illető, és ugyanúgy néz ki, bármelyik app küldte is oda, így az emberek megtanulnak megbízni benne.

Folytatás ide
Téma
  • Minden alkalommal megnevezi a terméket, ahová tartasz.
  • Jelkulcsok, e-mailben küldött kódok és bejelentkezési linkek, jelszavak pedig csak akkor, ha szeretnéd.
  • Ugyanaz a nyugodt oldal, világosan vagy sötéten, minden termékben.

Ez a Lobby működő másolata. Ezen az oldalon fut, semmit nem küld el, és senkit nem jelentkeztet be.

Usher IdentityUsher IdentityFolytatás ide: Acme Notes

Üdv újra.

Jelentkezz be az Usher Identity-fiókoddal.

Új vagy itt?

Az Usher Identity védelmével

Szabványok, nem bezártság

Azokat a protokollokat beszéli, amelyeket a rendszered már ismer.

Az Usher Identity mindenekelőtt OpenID Connect-szolgáltató. Használd az SDK-nkat, ha az kényelmes, vagy bármely OIDC-könyvtárat, bármilyen nyelven. Ha egyszer továbbállsz, az appjaidnak nem kell megváltoztatniuk, hogyan jelentkeztetik be az embereket.

A frissítési tokenek, a hozzájárulás és a hatókörök is benne vannak.
  • OIDC Core · Discovery

    OpenID Connect

    Környezetenként egy felderítési dokumentum, ID-tokenek és userinfo. Bármely tanúsított klienskönyvtár működik vele.

  • Csak S256

    OAuth 2.1 és PKCE

    Engedélyezési kód PKCE-vel minden kliensnek, legyen az nyilvános vagy bizalmas. Nincs implicit folyamat, és nincs jelszó a token-végponton.

  • RS256 · ES256 · EdDSA

    JWKS és kulcscsere

    Minden környezet saját kulcsaival ír alá, és ezeket a saját jwks_uri címén teszi közzé. Lecserélheted őket anélkül, hogy a bejelentkezett felhasználók kiesnének.

  • RFC 7662 · RFC 7009

    Introspekció és visszavonás

    Kérdezd meg, érvényes-e még egy token, vagy vess neki véget azonnal. Az Usher Identity minden kérésnél a saját munkameneteit ellenőrzi, így egy munkamenet lezárása azonnal érvénybe lép.

  • RP által kezdeményezett és háttércsatornás kijelentkezés

    Jelentkeztesd ki az embereket az appodból, vagy hagyd, hogy az Usher Identity szóljon minden appnak, ha bárhol véget ér egy munkamenet.

  • RFC 9449

    DPoP

    Kösd a tokeneket egy olyan kulcshoz, amely a kliensnél van, így egy ellopott token önmagában használhatatlan.

  • WebAuthn

    Jelkulcsok

    Teljes értékű megoldás, nem kiegészítő. Az emberek ujjlenyomattal, arccal vagy biztonsági kulccsal jelentkeznek be, és nincs mit kicsalni tőlük.

  • TOTP

    Hitelesítő appok

    Időalapú kódok bármely hitelesítő appból, tartalékkódokkal. A második tényező lehet választható vagy kötelező.

  • Bejelentkezési linkek

    Egyetlen koppintás a beérkezett levelek között. Rövid ideig érvényesek, egyszer használhatók, és ahhoz a környezethez kötődnek, amely elküldte őket.

  • E-mailes kódok

    Hat számjegy azoknak, akik az egyik eszközön jelentkeznek be, a leveleiket pedig egy másikon olvassák.

  • Közösségi bejelentkezés

    Google, GitHub, Microsoft és Apple. Egy fiókot csak akkor kapcsolunk össze, ha az e-mail-címe igazolt.

  • Szervezetek és csapatok

    Tagok, szerepkörök és meghívók az appodat használó vállalkozásoknak.

  • Hamarosan

    SAML

    Egyszeri bejelentkezés az ügyfeleid munkahelyi identitásszolgáltatóival.

  • Hamarosan

    SCIM

    Felhasználók létrehozása és megszüntetése az ügyfeleid címtáraiból.

Egy bejelentkezés menete

Öt lépés, mindegyik szabványos.

Ez az OpenID Connect engedélyezési kódos folyamata PKCE-vel, ugyanaz, amelyet minden komoly identitásszolgáltató beszél. Görgess végig rajta.

  1. 01

    Az appod a Lobbyba küldi őket.

    Amikor valaki a Folytatás az Usher Identityvel lehetőséget választja, az appod átirányítja a környezeted engedélyezési végpontjára egy PKCE-kihívással és egy state értékkel, amelyet később ellenőriz.

    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

    Bejelentkeznek, a maguk módján.

    Jelkulcs, e-mailben küldött kód, bejelentkezési link, közösségi fiók vagy jelszó: a Lobby csak azt kínálja, amit a környezeted engedélyez, és mindig kiírja, melyik appba tartanak.

    Usher IdentityUsher IdentityFolytatás ide: Acme

    Üdv újra.

    Jelkulcs használata
    Kódot kérek e-mailben
  3. 03

    Hozzájárulnak a megosztáshoz.

    Első alkalommal az emberek látják, mit kér az appod (a profiljukat, az e-mail-címüket, a bejelentkezve maradást), és egyszer hozzájárulnak.

    Acme a következőkhöz kér engedélyt:

    • A neved és a fotód megtekintése
    • Az e-mail-címed megtekintése
    • A bejelentkezésed fenntartása
    MégsemEngedélyezés
  4. 04

    Az Usher Identity visszaad egy kódot.

    A böngésző visszatér az átirányítási URI-dra egy egyszer használható, öt percig érvényes kóddal és az általad küldött state értékkel, amelyet az appod ellenőriz.

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

    Az appod tokenekre cseréli.

    A szervered elküldi a kódot és a PKCE-ellenőrzőt a token-végpontra. Válaszul megérkezik egy ID-token, amely megmondja, kik ők, egy hozzáférési token az API-dhoz, és egy frissítési token, hogy bejelentkezve maradjanak.

    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
    }

Elkülönítés már a tervezéstől

Minden környezet egy önálló épület.

Az éles és a fejlesztői környezeteid, akárcsak minden más ügyfélé, semmi lényegeset nem osztanak meg egymással. Egy hiba az egyikben nem tud olvasni a másikból, nem tud a nevében aláírni, és nem tud bejelentkezni oda.

Saját Postgres-séma
Nem egy bérlőoszlop egy közös táblában, hanem a környezetnek létrehozott séma, és benne semmi más.
Saját aláírókulcsok
Az egyik környezet tokenjei soha nem ellenőrizhetők egy másik környezet kulcsaival.
Saját lepecsételt titkok
A környezet saját adatkulcsával lepecsételve, amelyet egy mesterkulcs burkol.
Saját hoszt
A kibocsátók az Usher webhelyétől és a Console-tól külön domainen élnek, csak az adott hosztra érvényes cookie-kkal.

usheridentity.com

A webhely, az Usher Identity Console és az Usher Identity-fiókok

*.usherid.com

Környezetenként egy kibocsátó, külön domainen

Környezet

A felhasználók, a munkamenetek és a tokenek egy ehhez a környezethez létrehozott sémában élnek. A lekérdezések ezen a sémán futnak, soha nem egy közös táblán, bérlőoszloppal.

Másold át a lepecsételt Google titkos ügyfélkulcsot: Acme (éles) → Northwind (éles).

Fejlesztőknek

Az első bejelentkezésed, háromféleképpen.

Építsd be az SDK-t, amint megérkezik, használd a már bevált OIDC-könyvtáradat, vagy kezdd a felderítési dokumentum elolvasásával. A háttérben mindegyik ugyanaz a protokoll.

app/layout.tsx · app/page.tsxAz SDK-val érkezik
// 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 />
}

Saját üzemeltetés

A te szervereid, a te kulcsaid.

Használd az Usher Identityt szolgáltatásként, vagy futtasd ugyanazt a platformot a saját szervereiden, saját kulcsokkal és saját adatbázissal.

  • Docker

    Egyetlen Compose-fájl: az appok, a Postgres, a Valkey, a Caddy-perem és a kimenő proxy. A konténerek új jogosultságok szerzése nélkül, megvont képességekkel futnak.

  • Ubuntu

    Egy egyszerű Ubuntu-szerver is elég. A TLS-t a Caddy zárja le, a titkok pedig a konténereknek átadott fájlok, és soha nem kerülnek bele a konténerképekbe.

  • Postgres

    Mindent a Postgres tárol, környezetenként egy sémában. A Postgres és a Valkey olyan hálózaton van, amelyből nem vezet út az internetre.

Az Usher Identity forráskódjának egy példányából
# 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

A teljes saját üzemeltetési útmutató hamarosan érkezik. A fenti parancsok már mutatják a lényegét.

Kalauzold be a felhasználóidat.

Hozz létre egy munkaterületet és egy projektet, és az első környezeted saját kibocsátóval, kulcsokkal és Lobbyval érkezik.

Egyszer jelentkezel be. Mindenhol szívesen látunk.