Vai al contenuto
Documentazione · Spazi di lavoro, issuer e token

Concetti

Poche idee spiegano quasi tutto di Usher: dove risiedono le cose, chi emette i token, dove accedono le persone e quanto dura ogni token.

Spazi di lavoro, progetti e ambienti

  • Uno spazio di lavoro è il tuo team o la tua azienda in Usher Console. I suoi membri e il suo registro di controllo gli appartengono.
  • Un progetto è un singolo prodotto: la tua app web, o un portale per i partner. Uno spazio di lavoro può contenerne molti.
  • Un ambiente è una copia in esecuzione di un progetto, di solito development e production. È negli ambienti che risiedono persone, applicazioni, chiavi e impostazioni.

Spazio di lavoro · Acme Ltd

Progetto · Web

  • development · wise-otter-42
  • production · acme

Progetto · Portale partner

  • development · calm-heron-17
  • production · acme-partners
Ogni ambiente è un issuer a sé, con utenti, chiavi e Lobby tutti suoi.

Gli ambienti non condividono nulla che conti. Ognuno ha il proprio schema Postgres, le proprie chiavi di firma e i propri segreti sigillati sotto la propria chiave dei dati. Una persona che si registra in development non esiste in production, e un token dell’uno non può mai essere verificato con le chiavi dell’altro.

Un amministratore dello spazio di lavoro può eliminare un progetto dal fondo della sua Panoramica, dopo averne digitato il nome. Tutti i suoi ambienti spariscono insieme: le loro persone, applicazioni, chiavi e impostazioni, e ogni sessione e token che hanno emesso. I loro indirizzi smettono di rispondere e non vengono mai riassegnati, così un’app che si fida ancora di uno di essi non può essere ingannata dal progetto di qualcun altro.

Issuer

Ogni ambiente è un issuer OpenID Connect a sé, su un host tutto suo nel dominio dei tenant:

Issuer
https://<handle>.usherid.com
  • Gli ambienti di production hanno un handle scelto da te: da 3 a 32 lettere minuscole, cifre e trattini non consecutivi, come il nome della tua azienda. Un handle già usato non viene mai riassegnato.
  • Gli ambienti di development ricevono un handle casuale, come wise-otter-42, che nessuno scambierà per un marchio.

L’issuer viene fissato quando l’ambiente viene creato, perché ogni token che firma lo nomina in iss, e ogni app che se ne fida controlla quel valore.

Il dominio dei tenant è un dominio registrabile diverso da quello di Usher (usheridentity.com), quindi le pagine di accesso di un cliente non sono mai same-site con Usher Console, e i cookie sono host-only: un browser invia i cookie di un ambiente solo a quell’ambiente.

La Lobby

La Lobby è la pagina di accesso che ogni ambiente ospita sul proprio issuer. La tua app manda lì le persone; la Lobby le fa accedere e le rimanda indietro.

  • Indica sempre l’app verso cui la persona sta andando, nell’etichetta “Stai per accedere a”.
  • Offre solo i metodi che l’ambiente consente: passkey, codici via email, magic link, account social (Google, GitHub, Microsoft, Apple) e password.
  • Può richiedere un secondo fattore: un’app di autenticazione (con codici di backup) o una passkey.
  • Può essere aperta a chiunque, o limitata a una lista degli invitati fatta di indirizzi e domini.

Ha lo stesso aspetto da qualunque prodotto arrivi la persona. È voluto: le persone imparano com’è fatta una vera Lobby e si accorgono quando una pagina non lo è.

Account Usher

La maggior parte degli ambienti ha i propri utenti. Gli account Usher sono diversi: un solo account con cui una persona accede a ogni app che offre Continua con Usher. Ognuno gestisce il proprio su account.usheridentity.com.

Token e durata

TokenPredefinitoImpostabileA cosa serve
Codice di autorizzazione5 minutiFissoSi scambia una volta sola con i token. Monouso.
Token ID10 minutiDa 1 a 60 minutiDice alla tua app chi ha eseguito l’accesso. Non serve per chiamare le API.
Token di accesso10 minutiDa 1 a 60 minutiInviato alla tua API, che lo verifica.
Token di aggiornamento30 giorniDa 1 a 90 giorniOttiene nuovi token di accesso. Cambia a ogni utilizzo. Richiede offline_access.
Token di accesso machine-to-machine15 minutiDa 1 a 60 minutiPer client_credentials: server senza una persona dietro.
Codice via email, magic link10 minutiFissoUn solo accesso. Un codice consente tre tentativi.

Anche le sessioni nella Lobby hanno una durata: una sessione termina dopo 7 giorni di inattività (da 1 a 30) e dopo 30 giorni in tutto (da 1 a 90). Per modificare qualcosa di delicato, come un indirizzo email, serve un accesso eseguito negli ultimi 10 minuti.

Chiavi di firma

Per impostazione predefinita i token sono firmati con RS256; un ambiente può usare invece ES256 o EdDSA. Le chiavi pubbliche sono pubblicate al jwks_uri dell’ambiente, così le tue librerie le scaricano e prendono quelle nuove quando le chiavi vengono ruotate.

Ambiti

AmbitoCosa riceve la tua app
openidObbligatorio. Un token ID con il sub della persona.
profileIl suo nome e la sua foto.
emailIl suo indirizzo email, e se è verificato.
offline_accessUn token di aggiornamento, così la persona resta connessa.