Salt la conținut

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.

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.

Continuați la
Temă
  • 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.

Usher IdentityUsher IdentityContinuați la Acme Notes

Bine ați revenit.

Conectați-vă cu contul dvs. Usher Identity.

Sunteți nou aici?

Protejat de Usher Identity

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.

Tokenuri de reîmprospătare, consimțământ și scope-uri incluse.
  • 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.

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

    Bine ați revenit.

    Folosiți o cheie de acces
    Trimiteți-mi un cod prin e-mail
  3. 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
  4. 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…
  5. 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

Mediu

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 · app/page.tsxVine odată cu SDK-ul
// 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.

Dintr-o copie locală a 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

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