Skip to Content

Organizzazioni B2B Multi-Tenant

Il sistema Organizations abilita la multi-tenancy B2B in Auris. Ogni organizzazione rappresenta un’entità cliente — un’azienda, un team o qualsiasi raggruppamento logico — che possiede un insieme di utenti membri, ha le proprie assegnazioni di ruolo e può configurare il proprio provider SSO enterprise. Le organizzazioni sono indipendenti l’una dall’altra: il ruolo di un utente nell’Organizzazione A non ha alcuna influenza sul suo accesso nell’Organizzazione B.

Questo modello è progettato per prodotti SaaS che vendono ad aziende: il tuo singolo tenant Auris ospita più organizzazioni cliente, ciascuna con membership e controllo degli accessi isolati.


Concetti Base

Organizzazione: Un’entità con nome e slug univoco. Le organizzazioni hanno metadati, display name e impostazioni. Sono sempre di proprietà di esattamente un utente (l’OWNER).

Membro dell’Organizzazione: Un utente che appartiene a un’organizzazione con uno di quattro ruoli: OWNER, ADMIN, MEMBER o VIEWER.

Invito: Un invito basato su token con scadenza temporale che consente a un utente (o a un indirizzo email non ancora registrato) di unirsi a un’organizzazione con un ruolo specificato.

SSO per Organizzazione: Ogni organizzazione può configurare il proprio identity provider SAML 2.0 o OIDC. Quando un utente esegue il login con un’email corrispondente a un dominio verificato, Auris lo reindirizza automaticamente all’IdP della sua organizzazione. Vedi Enterprise SSO.


Creazione delle Organizzazioni

Le organizzazioni possono essere create da qualsiasi utente con il permesso appropriato, o programmaticamente tramite il Management SDK.

POST/api/organizationsRequires: manage:organizations

Crea una nuova organizzazione. L’utente che la crea viene automaticamente assegnato al ruolo OWNER.

Body della richiesta:

{ "name": "Acme Corporation", "displayName": "Acme Corp", "slug": "acme-corp", "metadata": { "plan": "enterprise", "contractId": "CNT-2025-0042" } }

Riferimento campi:

CampoTipoObbligatorioNote
namestring✅Nome interno, univoco per tenant
displayNamestringNoNome mostrato nell’interfaccia utente
slugstringNoIdentificatore URL-safe, generato automaticamente da name se omesso
metadataobjectNoJSON arbitrario per dati specifici dell’applicazione
GET/api/organizationsRequires: view:organizations

Restituisce un elenco paginato di tutte le organizzazioni nel tenant. Supporta i parametri di query search e page/limit.

GET/api/organizations/[id]Requires: view:organizations

Restituisce il record dell’organizzazione incluso il conteggio dei membri e le impostazioni di base.

PATCH/api/organizations/[id]Requires: manage:organizations

Aggiorna i campi dell’organizzazione. Tutti i campi sono opzionali — vengono aggiornati solo i campi forniti.

DELETE/api/organizations/[id]Requires: manage:organizations

Elimina l’organizzazione. I membri perdono le assegnazioni di ruolo a livello organizzazione. Gli account utente Auris sottostanti non vengono modificati.


Ruoli dei Membri

Le organizzazioni usano un sistema di ruoli gerarchici a quattro livelli. I ruoli più alti ereditano tutte le capacità dei ruoli inferiori.

RuoloCapacità
OWNERControllo completo. Può gestire tutte le impostazioni, membri, SSO e fatturazione. C’è sempre esattamente un OWNER. L’OWNER non può essere rimosso da un altro OWNER — la proprietà deve essere trasferita prima.
ADMINPuò gestire i membri (aggiungere, rimuovere, cambiare ruoli fino ad ADMIN). Può configurare SSO e impostazioni dell’organizzazione. Non può eliminare l’organizzazione.
MEMBERAccesso standard. Le concessioni di ruolo sono definite dall’applicazione — Auris non impone restrizioni alle risorse a questo livello al di là di ciò che la tua applicazione applica.
VIEWERAccesso in sola lettura. Può visualizzare la membership e le impostazioni dell’organizzazione ma non può apportare modifiche.

Auris applica la gerarchia dei ruoli a livello API. Un ADMIN non può assegnare il ruolo OWNER a un altro utente — il trasferimento della proprietà richiede una chiamata API separata da parte dell’OWNER corrente.


Gestione dei Membri

GET/api/organizations/[id]/membersRequires: view:organizations

Restituisce l’elenco paginato dei membri dell’organizzazione, inclusi i dettagli dell’utente e il suo ruolo nell’organizzazione.

Risposta:

{ "data": [ { "userId": "usr_01HX...", "email": "[email protected]", "firstName": "Alice", "lastName": "Rossi", "role": "ADMIN", "joinedAt": "2025-01-15T10:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 12, "totalPages": 1 } }
POST/api/organizations/[id]/membersRequires: manage:organizations

Aggiunge direttamente un utente (tramite userId) all’organizzazione con un ruolo specificato. L’utente deve già esistere in Auris.

{ "userId": "usr_01HX...", "role": "MEMBER" }
PATCH/api/organizations/[id]/members/[userId]Requires: manage:organizations

Aggiorna il ruolo del membro nell’organizzazione.

DELETE/api/organizations/[id]/members/[userId]Requires: manage:organizations

Rimuove l’utente dall’organizzazione. L’account Auris dell’utente non viene eliminato né disabilitato.


Inviti

Gli inviti consentono di aggiungere utenti a un’organizzazione tramite email, anche se non hanno ancora un account Auris. Il flusso di invito:

  1. Un ADMIN o OWNER invia un invito a un indirizzo email.
  2. Auris genera un token univoco con scadenza temporale e invia un’email con un link di accettazione.
  3. L’invitato clicca il link. Se ha già un account Auris, viene aggiunto immediatamente all’organizzazione. In caso contrario, viene invitato a creare un account, dopo il quale l’invito viene accettato.
  4. Gli inviti scadono dopo 7 giorni se non accettati.
POST/api/organizations/[id]/invitationsRequires: manage:organizations

Crea e invia un invito a un indirizzo email.

{ "email": "[email protected]", "role": "MEMBER", "message": "Sei stato invitato a unirti ad Acme Corp sulla nostra piattaforma." }
GET/api/organizations/[id]/invitationsRequires: manage:organizations

Elenca tutti gli inviti in sospeso, accettati e scaduti per l’organizzazione.

DELETE/api/organizations/[id]/invitations/[invitationId]Requires: manage:organizations

Annulla un invito in sospeso. Gli inviti scaduti non possono essere accettati ma non devono essere annullati manualmente.

Stati degli inviti:

StatoSignificato
PENDINGInviato e in attesa di accettazione
ACCEPTEDL’utente ha accettato ed è ora un membro
EXPIREDIl periodo di 7 giorni è passato senza accettazione
CANCELLEDAnnullato manualmente da un ADMIN o OWNER

Utilizzo con l’SDK

import { useOrganization } from '@auris/react' function OrgDashboard() { // Restituisce il contesto dell'organizzazione dalla sessione dell'utente autenticato. // L'organizzazione è derivata dai claims del token di accesso. const { organization, members, isLoading } = useOrganization() if (isLoading) return <div>Caricamento...</div> if (!organization) return <div>Nessuna organizzazione</div> return ( <div> <h1>{organization.displayName}</h1> <p>Membri: {members.length}</p> <ul> {members.map((member) => ( <li key={member.userId}> {member.email} — {member.role} </li> ))} </ul> </div> ) }

Metadati dell’Organizzazione

Come gli utenti, le organizzazioni supportano metadati JSON arbitrari. Usali per memorizzare dati specifici dell’applicazione insieme al record dell’organizzazione senza migrazioni di schema.

{ "metadata": { "plan": "enterprise", "contractId": "CNT-2025-0042", "maxSeats": 250, "billingEmail": "[email protected]", "features": ["advanced-analytics", "custom-domains", "audit-export"] } }

I metadati vengono restituiti in ogni risposta API dell’organizzazione e sono accessibili nel Management SDK.


Casi d’Uso

Multi-tenancy SaaS: Ciascuno dei tuoi clienti è un’organizzazione. La tua applicazione legge l’organizzazione dell’utente dal suo JWT o sessione e delimita tutte le query ai dati di quell’organizzazione. I nuovi clienti vengono onboarded creando un’organizzazione e invitando il loro amministratore.

Onboarding clienti enterprise: Crea l’organizzazione, aggiungi l’amministratore IT del cliente come OWNER e lascia che gestisca i propri utenti e configuri il proprio SSO aziendale. Il tuo team mantiene la visibilità a livello di tenant tramite la Console Admin.

Soluzioni white-label: Ogni organizzazione cliente può configurare il proprio SSO, la verifica del dominio e il display name. La pagina Hosted Login si adatta al branding per organizzazione quando l’email di un utente corrisponde a un dominio verificato.

Team di prodotto interni: Separa linee di prodotto o business unit in organizzazioni distinte per una gestione isolata dei ruoli, senza mantenere istanze tenant Auris separate.


Permessi Richiesti

OperazionePermesso
Visualizza / ottieni organizzazioniview:organizations
Crea / aggiorna / elimina organizzazionimanage:organizations
Gestisci i membrimanage:organizations
Invia / annulla invitimanage:organizations

Pagine Correlate