Identitate pentru aplicațiile dvs., pe standarde deschise
Vă poftește înăuntru.
Un singur cont. Toate ușile.
Usher Identity conectează oamenii la aplicațiile dvs. cu OpenID Connect și OAuth 2.1: chei de acces, coduri, conectare prin rețele sociale și organizații, cu fiecare mediu ținut separat de toate celelalte.
Gratuit la început. Rulează și pe propriile servere.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
Lobby-ul
O pagină de conectare care vă primește, nu vă interoghează.
Lobby-ul este pagina de conectare pe care Usher Identity o găzduiește pentru aplicația dvs. Spune întotdeauna unde merge persoana și arată la fel, oricare ar fi aplicația care a trimis-o, așa că oamenii învață să aibă încredere în el.
- Numește de fiecare dată produsul spre care mergeți.
- Chei de acces, coduri prin e-mail și linkuri magice, cu parole doar dacă le doriți.
- Aceeași pagină calmă, luminoasă sau întunecată, în fiecare produs.
Aceasta este o copie funcțională a Lobby-ului. Rulează în această pagină, nu trimite nimic și nu conectează pe nimeni.
Standarde, nu dependență de furnizor
Vorbește protocoalele pe care stack-ul dvs. le știe deja.
Usher Identity este în primul rând un furnizor OpenID Connect. Folosiți SDK-ul nostru când vă convine sau orice bibliotecă OIDC, în orice limbaj. Dacă plecați vreodată, aplicațiile dvs. nu trebuie să schimbe felul în care conectează oamenii.
- OIDC Core · Discovery
OpenID Connect
Un document de descoperire pentru fiecare mediu, tokenuri ID și userinfo. Orice bibliotecă client certificată funcționează.
- Doar S256
OAuth 2.1 cu PKCE
Cod de autorizare cu PKCE pentru fiecare client, public sau confidențial. Fără flux implicit, fără parole la endpointul de tokenuri.
- RS256 · ES256 · EdDSA
JWKS și rotirea cheilor
Fiecare mediu semnează cu propriile chei, publicate la jwks_uri. Le puteți roti fără să deranjați persoanele conectate.
- RFC 7662 · RFC 7009
Introspecție și revocare
Aflați dacă un token mai este valabil sau încheiați-l pe loc. Usher Identity își verifică propriile sesiuni la fiecare cerere, așa că încheierea uneia are efect imediat.
Deconectare inițiată de RP și back-channel
Deconectați din aplicația dvs. sau lăsați Usher Identity să anunțe fiecare aplicație când o sesiune se încheie oriunde.
- RFC 9449
DPoP
Legați tokenurile de o cheie pe care o deține clientul, astfel încât un token furat să nu folosească la nimic de unul singur.
- WebAuthn
Chei de acces
Cu drepturi depline, nu un supliment. Oamenii se conectează cu amprenta, cu fața sau cu o cheie de securitate și nu există nimic de furat prin phishing.
- TOTP
Aplicații de autentificare
Coduri bazate pe timp din orice aplicație de autentificare, cu coduri de rezervă. Al doilea factor poate fi opțional sau obligatoriu.
Linkuri magice
O atingere din căsuța de e-mail. De scurtă durată, de unică folosință și legate de mediul care le-a trimis.
Coduri prin e-mail
Șase cifre, pentru cei care se conectează pe un dispozitiv și își citesc e-mailul pe altul.
Conectare prin rețele sociale
Google, GitHub, Microsoft și Apple. Un cont este asociat doar după ce adresa sa de e-mail a fost dovedită.
Organizații și echipe
Membri, roluri și invitații pentru companiile care vă folosesc aplicația.
- În curând
SAML
Conectare unică (SSO) cu furnizorii de identitate ai angajaților clienților dvs.
- În curând
SCIM
Provizionare și deprovizionare din directoarele clienților dvs.
Cum funcționează o conectare
Cinci pași, toți standard.
Acesta este fluxul cu cod de autorizare și PKCE din OpenID Connect, același flux pe care îl vorbește orice furnizor de identitate serios. Derulați pentru a-l parcurge.
- 01
Aplicația dvs. îi trimite la Lobby.
Când cineva alege Continuați cu Usher Identity, aplicația dvs. îl redirecționează către endpointul de autorizare al mediului, cu o provocare PKCE și o valoare state pe care o va verifica mai târziu.
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
Se conectează, în felul lor.
O cheie de acces, un cod prin e-mail, un link magic, un cont social sau o parolă: Lobby-ul oferă doar ce permite mediul dvs. și spune întotdeauna spre ce aplicație merg.
Usher IdentityUsher IdentityContinuați la AcmeBine ați revenit.
Folosiți o cheie de accesTrimiteți-mi un cod prin e-mail - 03
Își dau acordul.
Prima dată, oamenii văd ce cere aplicația dvs. (profilul, adresa de e-mail, menținerea sesiunii) și își dau acordul o singură dată.
Acme ar dori:
- Să vă vadă numele și fotografia
- Să vă vadă adresa de e-mail
- Să vă mențină sesiunea activă
AnulațiPermiteți - 04
Usher Identity dă înapoi un cod.
Browserul revine la URI-ul de redirecționare cu un cod de unică folosință, valabil cinci minute, și cu valoarea state trimisă de dvs., pe care aplicația o verifică.
302 Found Location: https://app.acme.example/callback ?code=SplxlOBeZQQYbYS6WxSbIA &state=k3Jx…
- 05
Aplicația îl schimbă pe tokenuri.
Serverul dvs. trimite codul și verificatorul PKCE la endpointul de tokenuri. Primește înapoi un token ID care spune cine este persoana, un token de acces pentru API-ul dvs. și un token de reîmprospătare pentru ca sesiunea să rămână activă.
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 }
Izolare prin design
Fiecare mediu este o clădire separată.
Mediile dvs. de producție și de dezvoltare, ca și cele ale oricărui alt client, nu au nimic important în comun. O greșeală într-unul nu poate citi, semna sau conecta într-altul.
- Propria schemă Postgres
- Nu o coloană de tenant într-un tabel comun, ci o schemă făcută pentru mediul respectiv și nimic altceva în ea.
- Propriile chei de semnare
- Tokenurile unui mediu nu pot fi verificate niciodată cu cheile altuia.
- Propriile secrete sigilate
- Sigilate cu cheia de date a mediului, care este la rândul ei învelită de o cheie principală.
- Propria gazdă
- Emitenții se află pe un domeniu separat de site-ul Usher și de Console, cu cookie-uri doar pentru gazdă.
usheridentity.com
Site-ul, Usher Identity Console, conturile Usher Identity
*.usherid.com
Câte un emitent pentru fiecare mediu, pe un domeniu separat
Utilizatorii, sesiunile și tokenurile stau într-o schemă făcută pentru acest mediu. Interogările rulează pe acea schemă, niciodată pe un tabel comun cu o coloană de tenant.
Copiați secretul client Google sigilat al mediului de producție din Acme în mediul de producție din Northwind.
Pentru dezvoltatori
Prima conectare, în trei feluri.
Adăugați SDK-ul când apare, folosiți biblioteca OIDC în care aveți deja încredere sau începeți prin a citi documentul de descoperire. Dedesubt este același protocol.
// 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 />
}Găzduire proprie
Serverele dvs., cheile dvs.
Folosiți Usher Identity ca serviciu sau rulați aceeași platformă pe propriile servere, cu propriile chei și propria bază de date.
Docker
Un singur fișier Compose: aplicațiile, Postgres, Valkey, serverul de margine Caddy și proxy-ul de ieșire. Containerele rulează fără privilegii noi și cu capabilitățile eliminate.
Ubuntu
Un simplu server Ubuntu este suficient. Caddy face terminarea TLS, iar secretele sunt fișiere date containerelor, niciodată incluse în imagini.
Postgres
Postgres păstrează totul, câte o schemă pentru fiecare mediu. El și Valkey stau într-o rețea fără nicio rută spre 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 migrationsGhidul complet de găzduire proprie este pe drum. Comenzile de mai sus îi arată forma.
Poftiți-vă utilizatorii înăuntru.
Creați un spațiu de lucru și un proiect, iar primul mediu vine cu propriul emitent, propriile chei și propriul Lobby.
O singură conectare. Bine ați venit oriunde.