• saas
  • collaborazione
  • organizzazioni
  • rbac
  • multi-tenant

Dietro le quinte: Come implementiamo la collaborazione degli utenti all'interno di un'app multi-tenant

Pratiche e approfondimenti sull'implementazione di una funzione di gestione degli inviti e degli accessi ai ruoli simile alla collaborazione di Logto Cloud in un'applicazione multi-tenant.

Charles
Charles
Developer

Sfondo

La scorsa settimana abbiamo introdotto la funzione di collaborazione su Logto Cloud. Se te la sei persa, dai un'occhiata! Ora puoi invitare colleghi e collaboratori ai tuoi tenant Logto esistenti, collaborando insieme alla gestione del sistema di identità per le tue applicazioni.

In questa versione della funzione, abbiamo aggiunto due ruoli a ciascun tenant Logto:

  • Admin: Accesso completo al tenant, inclusa la gestione delle risorse relative all'identità, l'invito e la gestione di altri membri, la gestione della fatturazione e la visualizzazione della cronologia di fatturazione.
  • Collaboratore: Può gestire risorse relative all'identità ma non ha accesso ad altre funzioni admin.

Coerentemente con il nostro impegno a utilizzare i nostri stessi strumenti, abbiamo sfruttato il nostro RBAC (Role-Based Access Control) e la funzione Organizzazioni per costruire la collaborazione degli utenti. Se sei nuovo a RBAC, dai un'occhiata al nostro post precedente per iniziare.

In questo post sul blog, vediamo cosa è stato necessario per implementare questa funzione e come queste pratiche potrebbero avvantaggiarti se stai sviluppando applicazioni multi-organizzazione.

La collaborazione di Logto Cloud è costruita con Logto Organizations

Ogni tenant di Logto Cloud funziona come un'organizzazione indipendente nel nostro sistema, alimentato dalla nostra stessa funzione Organizzazioni. Per introdurre i ruoli di admin del tenant e collaboratore, abbiamo creato due ruoli organizzativi nel modello di organizzazione, ciascuno assegnato a un set specifico di permessi organizzativi.

Ruoli organizzativi
Ambiti organizzativi

Gestire gli inviti con l'API di gestione di Logto

Abbiamo fornito un set di API di gestione correlate agli inviti nella funzione organizzazioni. Con queste API, puoi, per esempio:

  • POST /api/organization-invitations creare e inviare un invito organizzativo a un indirizzo email
  • GET /api/organization-invitations & GET /api/organization-invitations/{id} ottenere i tuoi inviti
  • PUT /api/organization-invitations/{id}/status accettare o rifiutare l'invito aggiornando lo stato dell'invito

Per ulteriori dettagli, consulta la documentazione completa dell'API.

Connettersi al proprio connettore email

Poiché gli inviti vengono inviati via email, assicurati che il tuo connettore email sia configurato correttamente. In questa versione, abbiamo introdotto un nuovo tipo di utilizzo del modello email, OrganizationInvitation, che consente la personalizzazione del modello email dell'invito.

esempio di email di invito

Questo modello email accetterà di default una variabile {{link}}, che è il link alla pagina di atterraggio del Logto Console, dove gli utenti possono accettare l'invito e unirsi a un tenant Logto. Una delle pagine di atterraggio in Logto Cloud appare come nello screenshot qui sotto:

pagina di atterraggio dell'invito

Consulta la documentazione API per maggiori dettagli sull'invio dell'email di invito tramite l'API di Gestione.

Usa RBAC per gestire i permessi degli utenti

Con le configurazioni di cui sopra, possiamo inviare inviti via email e gli invitati possono unirsi all'organizzazione con il ruolo assegnato.

Gli utenti con diversi ruoli organizzativi avranno diversi ambiti (permessi) nei loro token di accesso. Pertanto, sia l'applicazione client (Logto Console) che i nostri servizi backend dovrebbero verificare questi ambiti per determinare le funzionalità visibili e le azioni consentite.

Bene, finora sembra che tutto sia connesso, e cos'altro ci manca?

Gestire gli aggiornamenti degli ambiti nei token di accesso

Gestire gli aggiornamenti degli ambiti nei token di accesso implica:

  • Revocare gli ambiti esistenti: Ad esempio, declassare un admin a collaboratore non-admin ridurrà automaticamente gli ambiti nel nuovo token di accesso ottenuto con il token di aggiornamento esistente.
  • Concedere nuovi ambiti: Al contrario, promuovere un utente ad admin richiede l'avvio di un processo di re-login o di ri-consenso per riflettere la modifica nei token di accesso dell'utente.

Su Logto Cloud, il Console controlla attivamente gli ambiti degli utenti utilizzando richieste SWR, e acconsentiamo automaticamente ogni volta che un utente viene promosso ad admin.

Se stai implementando una funzione simile con RBAC, avrai bisogno di un meccanismo (ad esempio, WebSocket o eventi push dal server) per notificare alla tua applicazione gli aggiornamenti degli ambiti, consentendo il ri-consenso o l'emissione di nuovi token di accesso di conseguenza. Logto fornirà anche più webhook per assistere in questo nelle prossime versioni.

In sintesi

Le funzioni multi-tenant e di collaborazione di Logto Cloud sfruttano la nostra funzione Organizzazioni. Se stai sviluppando un'app multi-tenant simile, considera l'utilizzo di questa funzione con approcci simili.

Spero che questo post sul blog sia utile. Per domande o discussioni, non esitare a unirti al nostro canale Discord.