Identità per le tue app, su standard aperti
Ti accompagna dentro.
Un solo account. Ogni porta.
Usher Identity fa accedere le persone alle tue app con OpenID Connect e OAuth 2.1: passkey, codici, accesso con account social e organizzazioni, con ogni ambiente separato da tutti gli altri.
Gratis per iniziare. Funziona anche sui tuoi server.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
La Lobby
Una pagina di accesso che accoglie, non interroga.
La Lobby è la pagina di accesso che Usher Identity ospita per la tua app. Dice sempre dove sta andando la persona e ha lo stesso aspetto da qualunque app arrivi, così le persone imparano a fidarsi.
- Indica ogni volta il prodotto verso cui stai andando.
- Passkey, codici via email e magic link, con le password solo se le vuoi.
- La stessa pagina tranquilla, chiara o scura, in ogni prodotto.
Questa è una copia funzionante della Lobby. Gira in questa pagina, non invia nulla e non fa accedere nessuno.
Standard, nessun vincolo
Parla i protocolli che il tuo stack conosce già.
Usher Identity è prima di tutto un provider OpenID Connect. Usa il nostro SDK quando ti è comodo, oppure qualsiasi libreria OIDC in qualsiasi linguaggio. Se un giorno te ne andrai, le tue app non dovranno cambiare il modo in cui fanno accedere le persone.
- OIDC Core · Discovery
OpenID Connect
Un documento di discovery per ogni ambiente, token ID e userinfo. Funziona qualsiasi libreria client certificata.
- Solo S256
OAuth 2.1 con PKCE
Codice di autorizzazione con PKCE per ogni client, pubblico o confidenziale. Nessun flusso implicito, nessuna password all’endpoint del token.
- RS256 · ES256 · EdDSA
JWKS e rotazione delle chiavi
Ogni ambiente firma con le proprie chiavi, pubblicate al suo jwks_uri. Ruotale senza disconnettere chi ha già eseguito l’accesso.
- RFC 7662 · RFC 7009
Introspezione e revoca
Chiedi se un token è ancora valido, o invalidalo subito. Usher Identity verifica le proprie sessioni a ogni richiesta, quindi chiuderne una ha effetto immediato.
Logout avviato dall’RP e back-channel
Avvia l’uscita dalla tua app, oppure fai avvisare da Usher Identity ogni app quando una sessione termina altrove.
- RFC 9449
DPoP
Vincola i token a una chiave in possesso del client, così un token rubato, da solo, non serve a nulla.
- WebAuthn
Passkey
Di prima classe, non un’aggiunta. Le persone accedono con l’impronta, il volto o una chiave di sicurezza, e non c’è nulla che il phishing possa rubare.
- TOTP
App di autenticazione
Codici basati sul tempo da qualsiasi app di autenticazione, con codici di backup. Rendi il secondo fattore facoltativo o obbligatorio.
Magic link
Un tocco dalla casella di posta. Durata breve, monouso e vincolati all’ambiente che li ha inviati.
Codici via email
Sei cifre, per chi accede su un dispositivo e legge la posta su un altro.
Accesso con account social
Google, GitHub, Microsoft e Apple. Un account viene collegato solo quando la sua email è stata verificata.
Organizzazioni e team
Membri, ruoli e inviti per le aziende che usano la tua app.
- In arrivo
SAML
Single sign-on con gli identity provider aziendali dei tuoi clienti.
- In arrivo
SCIM
Provisioning e deprovisioning dalle directory dei tuoi clienti.
Come funziona un accesso
Cinque passaggi, tutti standard.
È il flusso del codice di autorizzazione di OpenID Connect con PKCE, lo stesso che parla ogni identity provider serio. Scorri per seguirlo.
- 01
La tua app indirizza la persona alla Lobby.
Quando qualcuno sceglie Continua con Usher Identity, la tua app lo reindirizza all’endpoint di autorizzazione del tuo ambiente, con una challenge PKCE e un valore state che verificherà in seguito.
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
La persona accede, a modo suo.
Una passkey, un codice via email, un magic link, un account social o una password: la Lobby offre solo ciò che il tuo ambiente consente, e dice sempre verso quale app si sta andando.
Usher IdentityUsher IdentityStai per accedere a AcmeTi diamo il bentornato.
Usa una passkeyInviami un codice via email - 03
La persona acconsente alla condivisione.
La prima volta, le persone vedono cosa chiede la tua app (il profilo, l’email, il mantenimento dell’accesso) e acconsentono una volta sola.
Acme vorrebbe:
- Vedere il tuo nome e la tua foto
- Vedere il tuo indirizzo email
- Mantenere attivo il tuo accesso
AnnullaConsenti - 04
Usher Identity restituisce un codice.
Il browser torna al tuo URI di reindirizzamento con un codice monouso valido cinque minuti, insieme allo state che hai inviato, che la tua app verifica.
302 Found Location: https://app.acme.example/callback ?code=SplxlOBeZQQYbYS6WxSbIA &state=k3Jx…
- 05
La tua app lo scambia con i token.
Il tuo server invia il codice e il verifier PKCE all’endpoint del token. In cambio arrivano un token ID che dice chi è la persona, un token di accesso per la tua API e un token di aggiornamento per mantenere l’accesso.
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 }
Isolamento fin dalla progettazione
Ogni ambiente è un edificio a sé.
I tuoi ambienti di produzione e di sviluppo, e quelli di ogni altro cliente, non condividono nulla che conti. Un errore in uno non può leggere i dati di un altro, firmare al suo posto né accedervi.
- Il proprio schema Postgres
- Non una colonna tenant in una tabella condivisa: uno schema creato per l’ambiente, che non contiene nient’altro.
- Le proprie chiavi di firma
- I token di un ambiente non possono mai essere verificati con le chiavi di un altro.
- I propri segreti sigillati
- Sigillati con la chiave dei dati dell’ambiente, a sua volta cifrata da una chiave master.
- Il proprio host
- Gli issuer risiedono su un dominio separato da quello del sito di Usher e di Console, con cookie host-only.
usheridentity.com
Il sito, Usher Identity Console, gli account Usher Identity
*.usherid.com
Un issuer per ambiente, su un dominio separato
Utenti, sessioni e token risiedono in uno schema creato per questo ambiente. Le query vengono eseguite su quello schema, mai su una tabella condivisa con una colonna tenant.
Copia il client secret Google sigillato di Acme (produzione) in Northwind (produzione).
Per gli sviluppatori
Il tuo primo accesso, in tre modi.
Integra l’SDK quando arriverà, usa la libreria OIDC di cui ti fidi già, o inizia leggendo il documento di discovery. Sotto, il protocollo è sempre lo stesso.
// 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 />
}Gestiscilo in autonomia
I tuoi server, le tue chiavi.
Usa Usher Identity come servizio, oppure esegui la stessa piattaforma sui tuoi server, con le tue chiavi e il tuo database.
Docker
Un solo file Compose: le app, Postgres, Valkey, l’edge Caddy e il proxy di uscita. I container girano senza nuovi privilegi e con le capability rimosse.
Ubuntu
Basta un normale server Ubuntu. Caddy termina il TLS, e i segreti sono file passati ai container, mai incorporati nelle immagini.
Postgres
Postgres contiene tutto, uno schema per ambiente. Postgres e Valkey stanno su una rete senza alcun percorso verso 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 migrationsLa guida completa al self-hosting è in arrivo. I comandi qui sopra ne danno già l’idea.
Fai accomodare i tuoi utenti.
Crea uno spazio di lavoro e un progetto: il tuo primo ambiente arriva con issuer, chiavi e Lobby tutti suoi.
Accedi una volta. Sei di casa ovunque.