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.
/api/organizationsRequires: manage:organizationsCrea 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:
| Campo | Tipo | Obbligatorio | Note |
|---|---|---|---|
name | string | ✅ | Nome interno, univoco per tenant |
displayName | string | No | Nome mostrato nell’interfaccia utente |
slug | string | No | Identificatore URL-safe, generato automaticamente da name se omesso |
metadata | object | No | JSON arbitrario per dati specifici dell’applicazione |
/api/organizationsRequires: view:organizationsRestituisce un elenco paginato di tutte le organizzazioni nel tenant. Supporta i parametri di query search e page/limit.
/api/organizations/[id]Requires: view:organizationsRestituisce il record dell’organizzazione incluso il conteggio dei membri e le impostazioni di base.
/api/organizations/[id]Requires: manage:organizationsAggiorna i campi dell’organizzazione. Tutti i campi sono opzionali — vengono aggiornati solo i campi forniti.
/api/organizations/[id]Requires: manage:organizationsElimina 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.
| Ruolo | Capacità |
|---|---|
| OWNER | Controllo 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. |
| ADMIN | Può gestire i membri (aggiungere, rimuovere, cambiare ruoli fino ad ADMIN). Può configurare SSO e impostazioni dell’organizzazione. Non può eliminare l’organizzazione. |
| MEMBER | Accesso 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. |
| VIEWER | Accesso 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
/api/organizations/[id]/membersRequires: view:organizationsRestituisce 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 }
}/api/organizations/[id]/membersRequires: manage:organizationsAggiunge direttamente un utente (tramite userId) all’organizzazione con un ruolo specificato. L’utente deve già esistere in Auris.
{
"userId": "usr_01HX...",
"role": "MEMBER"
}/api/organizations/[id]/members/[userId]Requires: manage:organizationsAggiorna il ruolo del membro nell’organizzazione.
/api/organizations/[id]/members/[userId]Requires: manage:organizationsRimuove 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:
- Un ADMIN o OWNER invia un invito a un indirizzo email.
- Auris genera un token univoco con scadenza temporale e invia un’email con un link di accettazione.
- 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.
- Gli inviti scadono dopo 7 giorni se non accettati.
/api/organizations/[id]/invitationsRequires: manage:organizationsCrea 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."
}/api/organizations/[id]/invitationsRequires: manage:organizationsElenca tutti gli inviti in sospeso, accettati e scaduti per l’organizzazione.
/api/organizations/[id]/invitations/[invitationId]Requires: manage:organizationsAnnulla un invito in sospeso. Gli inviti scaduti non possono essere accettati ma non devono essere annullati manualmente.
Stati degli inviti:
| Stato | Significato |
|---|---|
PENDING | Inviato e in attesa di accettazione |
ACCEPTED | L’utente ha accettato ed è ora un membro |
EXPIRED | Il periodo di 7 giorni è passato senza accettazione |
CANCELLED | Annullato manualmente da un ADMIN o OWNER |
Utilizzo con l’SDK
React
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
| Operazione | Permesso |
|---|---|
| Visualizza / ottieni organizzazioni | view:organizations |
| Crea / aggiorna / elimina organizzazioni | manage:organizations |
| Gestisci i membri | manage:organizations |
| Invia / annulla inviti | manage:organizations |
Pagine Correlate
- Enterprise SSO per Organizzazione — Configura SSO SAML 2.0 o OIDC per singole organizzazioni
- SCIM 2.0 Provisioning — Automatizza la sincronizzazione dei membri da un IdP esterno
- Ruoli e Permessi — RBAC a livello tenant che complementa i ruoli organizzazione
- Console: Organizzazioni — Guida completa alla Console