Studium przypadku: Budowa multi-tenancy z Logto Organizations
Dowiedz się, jak skonfigurować solidne i skalowalne podstawy tożsamości dla multi-tenancy z Logto Organizations.
W dzisiejszych czasach multi-tenancy stało się niezbędną częścią aplikacji lub SaaS. Często wiąże się to ze skomplikowanymi relacjami między użytkownikami, organizacjami, rolami i uprawnieniami. Na przykład, użytkownik może być członkiem wielu organizacji i odwrotnie; użytkownik może również mieć różne role w różnych organizacjach.
Problem
Może to prowadzić do problemów nie tylko na początku, ale także w długoterminowym utrzymaniu aplikacji. Tradycyjny model kontroli dostępu opartej na rolach (RBAC) może częściowo rozwiązać ten problem, ale szybko staje się koszmarem, gdy liczba użytkowników i organizacji rośnie.
Na przykład, na początku możesz mieć tylko dwie role w każdej organizacji: admin
i member
. Kiedy masz 10 organizacji, będziesz zarządzać 20 rolami; kiedy masz 1000 organizacji, będziesz zarządzać 2000 rolami.
W miarę rozwoju biznesu możesz potrzebować dodać więcej ról, takich jak guest
, developer
, itd. Złożoność modelu RBAC będzie rosnąć wykładniczo.
Mieliśmy ten sam problem, kiedy budowaliśmy Logto Cloud. Szybko zdaliśmy sobie sprawę, że jest to powszechny problem w branży i musimy go rozwiązać. I tutaj z pomocą przychodzi Logto Organizations.
Szablon organizacji
Szybkie pytanie: Dlaczego aplikacje SaaS są SaaS? Wierzymy, że skalowalność jest jednym z najważniejszych powodów. Innymi słowy, to co działa dla jednego klienta, powinno działać dla wszystkich klientów.
To prowadzi do koncepcji "szablonu organizacji". Szablon organizacji jest planem modelu kontroli dostępu dla każdej organizacji: definiuje role i uprawnienia, które mają zastosowanie do wszystkich organizacji.
Załóżmy, że mamy dwie role dla każdej organizacji:
admin
: może zarządzać organizacją, w tym dodawać / usuwać członków, zmieniać role, itp.member
: może uzyskiwać dostęp do zasobów organizacji i zapraszać nowych członków.
Możemy stworzyć szablon organizacji z następującą konfiguracją:
Dodawanie użytkowników do organizacji
Ponieważ skonfigurowaliśmy szablon organizacji, zarządzanie użytkownikami staje się łatwe i naturalne. Możesz dodać użytkownika do organizacji poprzez Logto Console (interfejs webowy) lub poprzez Logto Management API
Zobacz Konfigurowanie organizacji, aby dowiedzieć się więcej.
Dodaliśmy dwie organizacje z następującą konfiguracją:
- Organizacja A: Zarówno Alice jak i Bob są członkami. Alice ma rolę
admin
, a Bob ma rolęmember
. - Organizacja B: tylko Alice jest członkiem i ma rolę
member
.
Żądanie tokenów organizacji w twojej aplikacji
W aplikacji klienckiej możesz teraz zażądać tokenu dostępu do organizacji (token organizacji) z Logto. Token organizacji to token JWT, który zawiera niezbędne informacje wymagane przez twoją usługę do sprawdzenia, czy użytkownik ma uprawnienia w organizacji.
Szczegółowe kroki żądania tokenu organizacji są opisane w Integracja organizacji z twoją aplikacją.
Załóżmy, że Alice jest zalogowana do twojej aplikacji i chce usunąć użytkownika w Organizacji A. Twoja aplikacja może zażądać tokenu organizacji dla "Organizacji A" z uprawnieniem remove:member
(zakres). Logto sprawdzi, czy Alice ma uprawnienia w organizacji i zwróci token organizacji, ponieważ ma rolę admin
:
Oto kilka przykładów przypadków błędów:
- Jeśli Bob chce usunąć użytkownika w Organizacji A, Logto zwróci błąd, ponieważ nie ma roli
admin
w Organizacji A. - Jeśli Alice chce usunąć użytkownika w Organizacji B, Logto również zwróci błąd, ponieważ nie ma roli
admin
w Organizacji B. - Jeśli Bob chce uzyskać token organizacji z dowolnym uprawnieniem w Organizacji B, Logto zwróci błąd, ponieważ nie ma członkostwa w Organizacji B.
Po tym, jak twoja aplikacja otrzyma token organizacji, może wywołać twoją usługę za pomocą tokenu organizacji, dodając go do nagłówka Authorization
.
Weryfikacja tokenów organizacji w twojej usłudze
W twojej usłudze możesz zweryfikować token organizacji za pomocą standardowego procesu weryfikacji JWT. Zobacz Weryfikacja tokenów organizacji aby uzyskać więcej szczegółów.
Aktualizacja szablonu organizacji
Kiedy musisz zaktualizować szablon organizacji, na przykład dodać nową rolę o nazwie developer
, możesz to zrobić w Logto Console lub poprzez Logto Management API. Zmiana zostanie automatycznie zastosowana do wszystkich organizacji bez żadnych przestojów.
Podsumowanie
Dzięki Logto Organizations zarządzanie i skalowanie multi-tenancy staje się standardowe i wygodne. Możesz skoncentrować się na logice biznesowej, a kwestię tożsamości i kontroli dostępu zostawić Logto.