Case study: Bouw multi-tenancy met Logto Organisaties
Leer hoe je een solide en schaalbare identiteitsbasis voor multi-tenancy kunt opzetten met Logto Organisaties.
Tegenwoordig wordt multi-tenancy een essentieel onderdeel van een app of SaaS. Het betreft vaak de complexe relatie tussen gebruikers, organisaties, rollen en permissies. Bijvoorbeeld, een gebruiker kan lid zijn van meerdere organisaties, en omgekeerd; een gebruiker kan ook verschillende rollen hebben in verschillende organisaties.
Het probleem
Dit kan leiden tot hoofdpijn, niet alleen in het begin, maar ook bij het langetermijnonderhoud van een app. Het traditionele rollen-gebaseerde toegangscontrole (RBAC) model kan dit probleem gedeeltelijk oplossen, maar wordt al snel een nachtmerrie wanneer het aantal gebruikers en organisaties groeit.
Bijvoorbeeld, in het begin heb je misschien maar twee rollen in elke organisatie: admin
en member
. Wanneer je 10 organisaties hebt, beheer je 20 rollen; wanneer je 1.000 organisaties hebt, beheer je 2.000 rollen.
Naarmate het bedrijf groeit, zul je mogelijk meer rollen moeten toevoegen, zoals guest
, developer
, etc. De complexiteit van het RBAC model zal exponentieel groeien.
We hadden hetzelfde probleem toen we Logto Cloud bouwden. We realiseerden ons al snel dat dit een algemeen probleem is voor de industrie en dat we het moeten oplossen. En Logto Organisaties is hier om te redden.
Organisatie-sjabloon
Een snelle vraag: Waarom zijn SaaS-apps SaaS? Wij geloven dat schaalbaarheid een van de belangrijkste redenen is. Met andere woorden, wat voor één klant werkt, zou voor alle klanten moeten werken.
Dit leidt tot het concept van "organisatie-sjabloon". Een organisatie-sjabloon is een blauwdruk van het toegangscontrolemodel voor elke organisatie: het definieert de rollen en permissies die van toepassing zijn op alle organisaties.
Laten we zeggen dat we twee rollen hebben voor elke organisatie:
admin
: kan de organisatie beheren, inclusief leden toevoegen/verwijderen, rollen wijzigen, etc.member
: kan toegang krijgen tot de middelen van de organisatie en nieuwe leden uitnodigen.
We kunnen een organisatie-sjabloon maken met de volgende configuratie:
Gebruikers toevoegen aan organisaties
Sinds we het organisatie-sjabloon hebben ingesteld, wordt het beheren van gebruikers eenvoudig en natuurlijk. Je kunt een gebruiker toevoegen aan een organisatie via de Logto Console (de web UI) of via de Logto Management API
Zie Configureer organisaties om meer te leren.
We hebben twee organisaties toegevoegd met de volgende setup:
- Organisatie A: Zowel Alice als Bob zijn leden. Alice heeft de
admin
rol, en Bob heeft demember
rol. - Organisatie B: Alleen Alice is een lid, en ze heeft de
member
rol.
Organisatie-tokens aanvragen in je app
In je klantapp, kun je nu een organisatie-toegangstoken (organisatietoken) aanvragen bij Logto. Het organisatietoken is een JWT-token dat de nodige informatie bevat voor je service om te verifiëren of de gebruiker toestemming heeft in de organisatie.
De gedetailleerde stappen voor het aanvragen van een organisatietoken worden beschreven in Integreer Organisaties met je app.
Stel dat Alice is aangemeld bij je app en ze wil een gebruiker verwijderen in Organisatie A. Je app kan een organisatietoken aanvragen voor "Organisatie A" met de remove:member
toestemming (scope). Logto zal verifiëren of Alice de toestemming heeft in de organisatie en een organisatietoken retourneren aangezien zij de admin
rol heeft:
Hier zijn enkele voorbeelden van foutgevallen:
- Als Bob een gebruiker wil verwijderen in Organisatie A, zou Logto een fout geven omdat hij de
admin
rol niet heeft in Organisatie A. - Als Alice een gebruiker wil verwijderen in Organisatie B, zou Logto ook een fout geven omdat ze de
admin
rol niet heeft in Organisatie B. - Als Bob een organisatietoken wil ophalen met enige toestemming in Organisatie B, zou Logto een fout geven omdat hij geen lidmaatschap heeft in Organisatie B.
Nadat je app het organisatietoken heeft ontvangen, kan je het naar je service sturen door het toe te voegen aan de Authorization
header.
Organisatietokens verifiëren in je service
In je service kun je het organisatietoken verifiëren door het standaard JWT-verificatieproces. Zie Verifieer organisatietokens voor meer details.
Organisatie-sjabloon bijwerken
Wanneer je het organisatie-sjabloon moet bijwerken, bijvoorbeeld een nieuwe rol genaamd developer
toevoegen, kun je dit doen in de Logto Console of via de Logto Management API. De wijziging zal automatisch worden toegepast op alle organisaties zonder enige downtime.
Conclusie
Met Logto Organisaties wordt het beheren en schalen van multi-tenancy standaard en comfortabel. Je kunt je focussen op je bedrijfslogica en laat de identiteit en toegangscontrole aan Logto over.