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.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
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.
- 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.
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.
- 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.
- 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
- 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álataKódot kérek e-mailben - 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 - 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…
- 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
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
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.
# 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 migrationsA 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.