• sviluppo saas
  • saas multi-tenant
  • architettura saas
  • modello saas

Costruisci un'applicazione SaaS multi-tenant: Una guida completa dal design all'implementazione

Impara come costruire efficientemente un'applicazione SaaS multi-tenant con autenticazione robusta, gestione delle organizzazioni e controllo degli accessi basato sui ruoli in poche ore.

Yijun
Yijun
Developer

Come sono costruite app come Notion, Slack o Figma? Queste applicazioni SaaS multi-tenant sembrano semplici da usare, ma costruirne una da soli? È un'altra storia.

Quando ho pensato per la prima volta di costruire una bestia così complessa, la mia mente è esplosa:

  • Gli utenti hanno bisogno di molteplici opzioni di accesso (email, Google, GitHub)
  • Ogni utente può creare e appartenere a più organizzazioni
  • Diversi livelli di permesso all'interno di ogni organizzazione
  • Le organizzazioni aziendali richiedono l'automazione dell'adesione per specifici domini email
  • Requisiti di MFA per operazioni sensibili
  • ...

"Capo, parliamo del design del prodotto tra due settimane. Sono bloccato nel fango in questo momento."

Ma quando ho effettivamente iniziato a lavorarci, ho scoperto che non è così scoraggiante come sembra.

Ho appena costruito un sistema con tutte queste funzionalità in MENO DI 2 ORE!

documind-home-page.png

Pannello di controllo DocumindPagina dell'organizzazione di Documind

Ti mostrerò esattamente come progettare e implementare un tale sistema dal basso verso l'alto - e sarai sorpreso di quanto sia davvero semplice nel 2025 con strumenti moderni e l'approccio architetturale giusto.

Il codice sorgente completo è disponibile alla fine di questo articolo. Immergiamoci!

Inizieremo con un prodotto SaaS di documentazione AI chiamato DocuMind.

DocuMind è un prodotto SaaS di documentazione AI progettato con un modello multi-tenant per supportare utenti individuali, piccole imprese e aziende.

La piattaforma offre potenti funzionalità AI per la gestione dei documenti, inclusa la generazione automatica di riassunti, l'estrazione dei punti chiave e le raccomandazioni intelligenti sui contenuti all'interno delle organizzazioni.

Quali funzionalità sono richieste per l'autenticazione e l'autorizzazione del SaaS?

Per prima cosa, esaminiamo i requisiti necessari. Quali funzionalità ti servono?

Architettura multi-tenant

Per abilitare un'architettura multi-tenant, avrai bisogno di un livello di entità chiamato organizzazione. Immagina di avere un unico pool di utenti che possono accedere a più spazi di lavoro. Ogni organizzazione rappresenta uno spazio di lavoro e gli utenti mantengono un'unica identità mentre accedono a diversi spazi di lavoro (organizzazioni) in base ai loro ruoli assegnati.

multi-tenant-app-architecture.svg

È una funzionalità ampiamente utilizzata nei provider di autenticazione. Un'organizzazione in un sistema di gestione dell'identità corrisponde allo spazio di lavoro, progetto o tenant della tua app SaaS.

organization-examples.png

Membreship

Un membro è un concetto temporaneo utilizzato per indicare lo stato di appartenenza di un'identità all'interno di un'organizzazione.

Ad esempio, Sarah si iscrive alla tua app utilizzando la sua email, [email protected]. Può appartenere a diversi spazi di lavoro. Se Sarah fa parte di Workspace A ma non di Workspace B, viene considerata un membro di Workspace A ma non di Workspace B.

Design di ruoli e permessi

In un'architettura multi-tenant, gli utenti hanno bisogno di ruoli con specifici permessi per accedere alle risorse del loro tenant. I permessi sono controlli di accesso dettagliati che definiscono azioni specifiche, come read: order o write: order. Determinano quali azioni possono essere eseguite su particolari risorse.

I ruoli sono un insieme di permessi assegnati ai membri in un ambiente multi-tenant.

Dovrai definire questi ruoli e permessi, quindi assegnare ruoli agli utenti, e talvolta può includere processi automatizzati. Ad esempio:

  1. Gli utenti che si uniscono a un'organizzazione ottengono automaticamente il ruolo di membro.
  2. Il primo utente a creare uno spazio di lavoro viene automaticamente assegnato il ruolo di amministratore.

Flusso di iscrizione e login

Garantire un processo di registrazione e autenticazione facile da usare e sicuro, inclusi opzioni di accesso di base:

  1. Accesso con email e password: Metodo di accesso tradizionale con email e password.
  2. Accesso passwordless: Utilizzare codici di verifica tramite email per un accesso facile e sicuro.
  3. Gestione dell'account: Un centro account dove gli utenti possono aggiornare la loro email, password e altri dettagli.
  4. Accesso sociale: Opzioni come Google e GitHub per un accesso rapido.
  5. Autenticazione a più fattori (MFA): Aumentare la sicurezza consentendo l'accesso tramite app di autenticazione come Duo.

Creazione e invito al tenant

In un'app SaaS multi-tenant, una differenza chiave nel flusso utente è la necessità di supportare la creazione del tenant e gli inviti ai membri. Questo processo richiede pianificazione ed esecuzione accurate poiché gioca un ruolo chiave nell'attivazione e crescita del prodotto.

Ecco alcuni flussi d'uso tipici da considerare:

Tipo di utentePunto di ingresso
Nuovo accountEntra dalla pagina di accesso e iscrizione per creare un nuovo tenant
Account esistenteCrea un altro tenant all'interno del prodotto
L'account esistente ha ricevuto un nuovo invito al tenantEntra dalla pagina di accesso e iscrizione
L'account esistente ha ricevuto un nuovo invito al tenantEntra dall'email di invito
Il nuovo account ha ricevuto un nuovo invito al tenantEntra dalla pagina di accesso e iscrizione
Il nuovo account ha ricevuto un nuovo invito al tenantEntra dall'email di invito

Ecco alcuni scenari comuni presenti in quasi tutte le app SaaS. Usali come riferimento per ispirare il tuo team di prodotto e design, e sentiti libero di creare i tuoi flussi in base alle necessità.

Un nuovo account crea un tenantUn utente esistente crea un altro tenant
Un utente esistente accedeUn utente esistente si unisce tramite email
Un nuovo utente accedeUn nuovo utente si unisce tramite email

Architettura tecnica e design del sistema

Una volta compresi tutti i requisiti del prodotto, passiamo all'implementazione.

Definire la strategia di autenticazione

L'autenticazione sembra spaventosa. Gli utenti hanno bisogno:

  • Registrazione/accesso con email e password
  • Accesso con un clic tramite Google/Github
  • Reset della password in caso di dimenticanza
  • Accesso condiviso al team per i clienti aziendali
  • ...

Implementare anche solo queste funzionalità di base potrebbe richiedere settimane di sviluppo.

Ma ora, non dobbiamo costruire NESSUNA di queste cose da soli!

I provider di autenticazione moderni (sceglierò Logto questa volta) hanno pacchettizzato tutte queste funzionalità per noi. Il flusso di autenticazione è semplice:

Da settimane di sviluppo a 15 minuti di configurazione, Logto gestisce tutti i flussi complessi per noi! Copriremo i passaggi di integrazione nella sezione di implementazione successivamente. Ora possiamo concentrarci sulla costruzione delle caratteristiche principali di DocuMind!

Stabilire l'architettura multi-tenant

Il sistema di organizzazione consente agli utenti di creare e unirsi a più organizzazioni. Vediamo le relazioni principali:

In questo sistema, ogni utente può appartenere a più organizzazioni e ogni organizzazione può avere più membri.

Abilitare il controllo degli accessi nell'app multi-tenant

Il controllo degli accessi basato sui ruoli (RBAC) è importante per garantire sicurezza e scalabilità nelle applicazioni SaaS multi-tenant.

In un'app multi-tenant, il design dei permessi e dei ruoli è generalmente coerente, poiché deriva dal design del prodotto. Ad esempio, in più spazi di lavoro, c'è tipicamente un ruolo di amministratore e un ruolo di membro. Logto come fornitore di autenticazione ha il seguente design di controllo degli accessi basato sui ruoli a livello di organizzazione:

  1. Definizioni di permessi unificate: I permessi sono definiti a livello di sistema e si applicano in modo coerente a tutte le organizzazioni, garantendo una gestione dei permessi mantenibile e coerente
  2. Modelli di organizzazione: Combinazioni di ruoli e permessi predefiniti attraverso modelli di organizzazione, semplificando l'inizializzazione dell'organizzazione

La relazione dei permessi è simile a questa:

Poiché ogni utente ha bisogno del proprio o dei propri ruoli all'interno di ogni organizzazione, la relazione tra ruoli e organizzazioni deve riflettere i ruoli assegnati a ciascun utente:

Abbiamo progettato il sistema di organizzazione e il sistema di controllo degli accessi, e ora possiamo iniziare a costruire il nostro prodotto!

Tech stack

Ho scelto uno stack portatile, adatto ai principianti:

  1. Frontend: React (facilmente trasferibile a Vue/Angular/Svelte)
  2. Backend: Express (API semplice e intuitiva)

Perché separare frontend e backend?Perché ha un'architettura chiara, facile da imparare e semplice da cambiare stack. E per i fornitori di autenticazione, userò Logto come esempio.

E per le guide seguenti, i suoi schemi qui funzionano con: Qualsiasi frontend, qualsiasi backend e qualsiasi sistema di autenticazione.

Aggiungi il flusso di autenticazione di base alla tua app

Questo è il passaggio più semplice. Dobbiamo solo integrare Logto nel nostro progetto. Poi possiamo configurare i metodi di login/registrazione utente nella Console Logto in base alle nostre necessità.

Installa Logto nella tua app

Innanzitutto, accedi a Logto Cloud. Puoi iscriverti per un account gratuito se non ne hai uno. Crea un tenant di sviluppo per i test.

Nella Console del tenant, clicca sul pulsante "Applicazione" a sinistra. Quindi seleziona React per iniziare a costruire la nostra applicazione.

Segui la guida sulla pagina. Puoi completare l'integrazione di Logto in circa 5 minuti!

Ecco il mio codice di integrazione:

documind-home-page.png

Ecco un trucco utile: la nostra pagina di accesso ha sia i pulsanti Accedi che Iscriviti. Il pulsante Iscriviti porta direttamente alla pagina di registrazione di Logto. Questo funziona attraverso la funzione prima schermata di Logto. Determina quale passo del flusso di autenticazione gli utenti vedono per primo.

Puoi predefinire la pagina di registrazione quando il tuo prodotto prevede molti nuovi utenti.

Dopo aver cliccato su login, verrai indirizzato alla pagina di accesso di Logto. Al login riuscito (o registrazione), congratulazioni! La tua app ha il suo primo utente (tu)!

E chiama la funzione signOut dall'hook useLogto per scollegare l'utente quando vuoi.

Personalizza i metodi di accesso e registrazione

Nella Console Logto, clicca su "Esperienza di accesso" nel menu di sinistra. Poi clicca sulla scheda "Registrazione e accesso". In questa pagina, segui le istruzioni per configurare i metodi di accesso/registrazione di Logto.

sign-in-experience-settings.png

E il flusso di accesso sarà simile a questo:

Pagina di accesso di Logto

Abilita l'autenticazione a più fattori

Con Logto, abilitare MFA è semplice. Basta cliccare sul pulsante "Autenticazione a più fattori" nella Console Logto. Poi abilitarlo sulla pagina Auth multifattore.

mfa-settings.png

E il flusso MFA sarà simile a questo:

Passaggio di verifica MfaScansiona QR code nell'app di autenticazione

Tutto è così semplice! Abbiamo configurato un complesso sistema di autenticazione utente in pochi minuti!

Aggiunta dell'esperienza di organizzazione multi-tenant

Ora abbiamo il nostro primo utente! Tuttavia, questo utente non appartiene ancora a nessuna organizzazione, e non abbiamo creato organizzazioni.

Logto fornisce supporto integrato per il multi-tenancy. Puoi creare un numero qualsiasi di organizzazioni in Logto. Ogni organizzazione può avere più membri.

Ogni utente può ottenere le informazioni della propria organizzazione da Logto. Questo abilita il supporto multi-tenancy

Ottenere le informazioni sull'organizzazione di un utente

Per ottenere le informazioni sull'organizzazione di un utente da Logto, segui questi due passaggi:

Dichiara l'accesso alle informazioni sull'organizzazione nel Config Logto. Questo viene fatto impostando gli scopi e le risorse appropriate.

Utilizza il metodo fetchUserInfo di Logto per ottenere informazioni sull'utente, inclusi i dati dell'organizzazione.

Dopo aver completato questi passaggi, devi uscire e accedere di nuovo. Questo è necessario perché abbiamo modificato l'ambito e la risorsa richiesti.

Al momento, non hai creato alcuna organizzazione. L'utente non si è ancora unito a nessuna organizzazione. Il dashboard mostrerà "Non hai ancora nessuna organizzazione".

dashboard-no-orgs.png

Poi, creeremo un'organizzazione per i nostri utenti e li aggiungeremo ad essa.

Grazie a Logto, non dobbiamo costruire relazioni complesse dell'organizzazione. Dobbiamo solo creare un'organizzazione in Logto e aggiungere utenti ad essa. Logto gestisce per noi tutta la complessità. Ci sono due modi per creare organizzazioni:

  1. Creare manualmente le organizzazioni tramite la Console Logto
  2. Utilizzare l'API di gestione di Logto per creare organizzazioni, soprattutto quando si progetta un flusso SaaS che consente agli utenti di creare le proprie organizzazioni (spazi di lavoro).

Creare un'organizzazione nella console Logto

Clicca sul pulsante "Organizzazioni" nel menu a sinistra della Console Logto. Crea un'organizzazione.

Ora hai la tua prima organizzazione.

console-organizations.png

Poi, aggiungiamo l'utente a questa organizzazione.

Vai alla pagina dei dettagli dell'organizzazione. Passa alla scheda Membri. Clicca sul pulsante "+ Aggiungi membro". Seleziona il tuo utente di accesso dall'elenco a sinistra. Clicca sul pulsante "Aggiungi membri" in basso a destra. Ora hai aggiunto con successo l'utente a questa organizzazione.

console-add-member-to-orgs.png

Aggiorna la tua pagina APP. Vedrai che l'utente appartiene ora a un'organizzazione!

dashboard-has-orgs.png

Implementare l'esperienza di creazione di organizzazioni self-service

Creare un'organizzazione nella console non è sufficiente. La tua app SaaS necessita di un flusso che consenta agli utenti finali di creare e gestire facilmente i propri spazi di lavoro. Per implementare questa funzionalità, usa l'API di gestione di Logto.

Per indicazioni, dai un'occhiata alla documentazione Interagisci con l'API di gestione per impostare la comunicazione API con Logto.

Comprendere il flusso di interazione di autenticazione dell'organizzazione

Prendiamo il flusso di creazione dell'organizzazione come esempio. Ecco come funziona il processo di creazione dell'organizzazione:

Questo flusso ha due requisiti di autenticazione chiave:

  1. Protezione dell'API del servizio backend:
    • L'accesso del frontend all'API del nostro servizio backend richiede autenticazione
    • Gli endpoint API sono protetti verificando il token di accesso dell'utente Logto
    • Garantisce che solo gli utenti autenticati possano accedere ai nostri servizi
  2. Accesso all'API di gestione di Logto:
    • Il servizio backend deve chiamare in modo sicuro l'API di gestione di Logto
    • Segui la guida Interagisci con l'API di gestione per la configurazione
    • Utilizzare l'autenticazione Machine-to-Machine per ottenere le credenziali di accesso

Proteggi la tua API backend

Per prima cosa, creiamo un endpoint API nel nostro servizio backend per creare organizzazioni.

La nostra API del servizio backend consente solo utenti autenticati. Dobbiamo utilizzare Logto per proteggere la nostra API. Abbiamo anche bisogno di conoscere le informazioni dell'utente corrente (come l'ID utente).

Nel concetto di Logto (e OAuth 2.0), il nostro servizio backend agisce come server di risorse. Gli utenti accedono al server di risorse di DocuMind con un token di accesso dal frontend. Il server di risorse verifica questo token. Se valido, restituisce le risorse richieste.

Creiamo una API Resource per rappresentare il nostro servizio backend.

Vai alla Console Logto.

  1. Clicca sul pulsante "API resources" a destra.
  2. Clicca su "Crea API Resource". Seleziona Express nel popup.
  3. Inserisci "API DocuMind" come nome API. Usa "https://api.documind.com" come identificatore API.
  4. Clicca su crea.

Non ti preoccupare per questo URL identificatore API. È solo un identificatore univoco per la tua API in Logto. Non è correlato all'URL effettivo del tuo servizio backend.

Vedrai un tutorial per utilizzare la API resource. Puoi seguire quel tutorial o i nostri passaggi seguenti.

Creiamo un middleware requireAuth per proteggere il nostro endpoint POST /organizations.

Per utilizzare questo middleware, abbiamo bisogno di queste variabili d'ambiente:

  • LOGTO_JWKS_URL
  • LOGTO_ISSUER

Ottieni queste variabili dall'endpoint della configurazione OpenID del tuo tenant Logto. Visita https://<your-tenant-id>.logto.app/oidc/.well-known/openid-configuration. Troverai le informazioni necessarie nel JSON restituito:

Ora utilizza il middleware requireAuth nel nostro endpoint POST /organizations.

Questo protegge il nostro endpoint POST /organizations. Solo gli utenti con token di accesso Logto validi possono accedervi.

Ora possiamo ottenere il token da Logto nel nostro frontend. Gli utenti possono creare organizzazioni tramite il nostro servizio backend con questo token. Il middleware fornisce anche l'ID utente. Questo è utile quando si aggiungono utenti alle organizzazioni.

Nel codice frontend, dichiara questa API resource nel config Logto. Aggiungi il suo identificatore all'array delle risorse.

Come prima, gli utenti devono accedere di nuovo dopo aver aggiornato il config Logto.

Nel Dashboard, ottieni il token di accesso Logto quando crei un'organizzazione. Usa questo token per accedere alla nostra API del servizio backend.

Ora possiamo accedere correttamente alla nostra API del servizio backend DocuMind.

Chiamare l'API di gestione di Logto

Implementiamo la creazione dell'organizzazione utilizzando l'API di gestione di Logto.

Come le richieste del frontend al servizio backend, le richieste del servizio backend a Logto necessitano di token di accesso.

In Logto, utilizziamo l'autenticazione Machine-to-Machine per i token di accesso. Vedi Interagisci con l'API di gestione.

Vai alla pagina delle applicazioni nella Console Logto. Crea un'applicazione Machine-to-Machine. Assegna il ruolo "Accesso all'API di gestione Logto". Copia l'endpoint Token, l'ID App e il Segreto App. Li utilizzeremo per i token di accesso.

m2m-application.png

Ora possiamo ottenere i token di accesso all'API di gestione di Logto tramite questa applicazione M2M.

Usa questo token di accesso per chiamare l'API di gestione di Logto.

Utilizzeremo queste API di gestione:

Abbiamo ora implementato la creazione dell'organizzazione tramite l'API di gestione di Logto. Possiamo anche aggiungere utenti alle organizzazioni.

Testiamo questa funzione nel Dashboard.

dashboard-create-org.png

e clicca su “Crea Organizzazione”

dashboard-has-orgs.png

Creazione avvenuta con successo!

Il prossimo passo sarebbe invitare gli utenti a un'organizzazione. Non implementeremo ancora questa funzionalità nel nostro tutorial. Sai già come utilizzare l'API di gestione. Puoi consultare questo Creazione e invito al Tenant come riferimento per il design del prodotto e implementare facilmente questa funzionalità seguendo questo post sul blog: Come implementiamo la collaborazione tra utenti all'interno di un'app multi-tenant.

Implementare il controllo degli accessi alla tua app multi-tenant

Ora passiamo al controllo degli accessi all'organizzazione.

Vogliamo ottenere:

  • Gli utenti possono accedere solo alle risorse appartenenti alle proprie organizzazioni: Questo può essere fatto tramite il token dell'organizzazione di Logto
  • Gli utenti hanno ruoli specifici all'interno delle organizzazioni (con contenuti diversi) per eseguire azioni autorizzate: Questo può essere implementato tramite la funzione di modello di organizzazione di Logto

Vediamo come implementare queste funzionalità.

Utilizzando il token dell'organizzazione di Logto

Simile al token di accesso Logto che abbiamo menzionato prima, Logto emette un token di accesso corrispondente a una specifica risorsa, e gli utenti usano questo token per accedere alle risorse protette nel servizio backend. Analogamente, Logto emette un token dell'organizzazione corrispondente a una specifica organizzazione, e gli utenti usano questo token per accedere alle risorse dell'organizzazione protetta nel servizio backend.

Nell'applicazione frontend, possiamo utilizzare il metodo getOrganizationToken di Logto per ottenere un token per accedere a una specifica organizzazione.

Qui, organizationId è l'id dell'organizzazione a cui l'utente appartiene.

Prima di usare getOrganization o qualsiasi funzione dell'organizzazione, dobbiamo assicurarci che l'ambito urn:logto:scope:organizations e la risorsa urn:logto:resource:organization siano inclusi nel config Logto. Poiché li abbiamo già dichiarati in precedenza, non lo ripetiamo.

Nella nostra pagina dell'organizzazione, utilizziamo il token dell'organizzazione per ottenere i documenti all'interno dell'organizzazione.

Ci sono due punti importanti da notare in questa implementazione:

  1. Se l'organizationId passato a getOrganizationToken non è un id dell'organizzazione che appartiene all'utente corrente, questo metodo non sarà in grado di ottenere un token, garantendo così che gli utenti possono accedere solo alle loro organizzazioni.
  2. Quando si richiedono risorse dell'organizzazione, utilizziamo il token dell'organizzazione invece del token di accesso perché per le risorse che appartengono a un'organizzazione, vogliamo utilizzare il controllo dei permessi dell'organizzazione piuttosto che il controllo dei permessi dell'utente (lo comprenderai meglio quando implementiamo l'API GET /documents più tardi).

Successivamente, creiamo un'API GET /documents nel nostro servizio backend. Simile a come utilizziamo l'API resource per proteggere l'API POST /organizations, utilizziamo identificatori di risorse specifici dell'organizzazione per proteggere l'API GET /documents.

Per prima cosa, creiamo un middleware requireOrganizationAccess per proteggere le risorse dell'organizzazione.

Poi utilizziamo il middleware requireOrganizationAccess per proteggere l'API GET /documents.

In questo modo, abbiamo implementato l'utilizzo dei token dell'organizzazione per accedere alle risorse dell'organizzazione. Nel servizio backend, puoi recuperare le risorse corrispondenti dal database in base all'id dell'organizzazione.

Alcuni software richiedono l'isolamento dei dati tra le organizzazioni. Per ulteriori discussioni e implementazioni, puoi fare riferimento al post del blog: Implementazione multi-tenancy con PostgreSQL: Impara attraverso un semplice esempio reale.

Implementare il design di controllo degli accessi basato sui ruoli a livello di organizzazione

Abbiamo implementato l'uso dei token dell'organizzazione per accedere alle risorse dell'organizzazione. Successivamente, implementeremo il controllo dei permessi dell'utente all'interno delle organizzazioni utilizzando RBAC.

Supponiamo che DocuMind abbia due ruoli: Admin e Collaboratore.

Gli amministratori possono creare e accedere ai documenti, mentre i collaboratori possono solo accedere ai documenti.

Pertanto, la nostra organizzazione deve avere questi due ruoli: Admin e Collaboratore.

L'amministratore ha entrambi i permessi read:documents e create:documents, mentre il collaboratore ha solo il permesso read:documents.

  • Admin
    • read:documents
    • create:documents
  • Collaboratore
    • read:documents

Qui entra in gioco la funzione di template dell'organizzazione di Logto.

Un template dell'organizzazione è un modello del controllo degli accessi per ogni organizzazione: definisce i ruoli e i permessi che si applicano a tutte le organizzazioni.

Perché il template dell'organizzazione?

Perché la scalabilità è uno dei requisiti più importanti per i prodotti SaaS. In altre parole, ciò che funziona per un cliente dovrebbe funzionare per tutti i clienti.

Andiamo alla Console Logto > Modelli di organizzazione > Permessi dell'organizzazione e creiamo due permessi: read:documents e create:documents.

org-template-permission.png

Poi andiamo alla scheda dei ruoli dell'organizzazione per creare due ruoli utente: Admin e Collaboratore, e assegnare i permessi corrispondenti a questi ruoli.

organization-details.png

In questo modo, abbiamo creato un modello di permessi RBAC per ogni organizzazione.

Ora andiamo alla nostra pagina dei dettagli dell'organizzazione per assegnare ruoli appropriati ai nostri membri.

org-template-role.png

Ora gli utenti della nostra organizzazione hanno ruoli! Puoi ottenere questi passaggi tramite l'API di gestione di Logto:

Ora possiamo implementare il controllo dei permessi dell'utente verificando i loro permessi.

Nel nostro codice, dobbiamo fare in modo che il token dell'organizzazione dell'utente trasporti le informazioni sui permessi e poi verificare questi permessi nel backend.

Nel config Logto del codice frontend, dobbiamo dichiarare i permessi che gli utenti devono richiedere all'interno dell'organizzazione. Aggiungiamo i permessi read:documents e create:documents agli scopes.

Come al solito, accedi di nuovo con il tuo utente per rendere effettive queste configurazioni.

Poi nel middleware requireOrganizationAccess del backend, aggiungiamo la verifica dei permessi dell'utente.

Quindi crea un'API POST /documents e usa il middleware requireOrganizationAccess con la configurazione requiredScopes per proteggere questa API e l'API precedente GET /documents.

In questo modo, abbiamo implementato il controllo dei permessi dell'utente verificando i permessi dell'utente.

Nel frontend, puoi ottenere le informazioni sui permessi dell'utente decodificando il token dell'organizzazione o chiamando il metodo getOrganizationTokenClaims di Logto.

Controlla gli elementi della pagina in base ai permessi dell'utente verificando gli scope nei claims.

Aggiungi più funzionalità all'app multi-tenant

Finora, abbiamo implementato le funzionalità base degli utenti e organizzazioni in un sistema SaaS multi-tenant! Tuttavia, ci sono ancora alcune caratteristiche che non abbiamo coperto, come la personalizzazione del branding della pagina di login per ogni organizzazione, l'aggiunta automatica di utenti con email di domini specifici a determinate organizzazioni e l'integrazione delle funzionalità SSO a livello aziendale.

Queste sono tutte funzionalità pronte all'uso, e puoi trovare ulteriori informazioni su queste funzionalità nella documentazione di Logto.

Riassunto

Ricordi quanto ti sembrava travolgente all'inizio? Utenti, organizzazioni, permessi, funzionalità aziendali ... sembrava una montagna infinita da scalare.

Ma guarda cosa abbiamo realizzato:

  • Un sistema di autenticazione completo con opzioni di accesso multiple e supporto MFA
  • Un sistema di organizzazioni flessibile che supporta più affiliazioni
  • Controllo degli accessi basato sui ruoli all'interno delle organizzazioni

E la parte migliore? Non abbiamo dovuto reinventare la ruota. Sfruttando strumenti moderni come Logto, abbiamo trasformato ciò che poteva essere mesi di sviluppo in poche ore.

Il codice sorgente completo di questo tutorial è disponibile su: Multi-tenant SaaS Sample.

Questo è il potere dello sviluppo moderno nel 2025 - possiamo concentrarci sulla costruzione di caratteristiche uniche del prodotto invece di lottare con l'infrastruttura. Ora è il tuo turno di costruire qualcosa di fantastico!

Esplora tutte le funzionalità di Logto, da Logto Cloud a Logto OSS, sul sito web Logto o iscriviti a Logto cloud oggi.