• rozwój saas
  • multi-tenant saas
  • architektura saas
  • szablon saas

Zbuduj aplikację SaaS multi-tenant: Kompletny przewodnik od projektu do wdrożenia

Naucz się budować aplikację SaaS multi-tenant z solidnym uwierzytelnianiem, zarządzaniem organizacją i kontrolą dostępu opartą na rolach w zaledwie kilka godzin.

Yijun
Yijun
Developer

Jak budowane są aplikacje takie jak Notion, Slack czy Figma? Te aplikacje SaaS multi-tenant wyglądają na łatwe w użyciu, ale stworzenie takiej samodzielnie? To zupełnie inna historia.

Kiedy po raz pierwszy pomyślałem o stworzeniu tak skomplikowanej bestii, mój umysł eksplodował:

  • Użytkownicy potrzebują wielu opcji logowania (email, Google, GitHub)
  • Każdy użytkownik może tworzyć i przynależeć do wielu organizacji
  • Różne poziomy uprawnień w każdej organizacji
  • Organizacje korporacyjne wymagające automatycznego dołączania dla określonych domen e-mail
  • Wymagania MFA dla wrażliwych operacji
  • ...

"Szefie, porozmawiajmy o projekcie produktu za dwa tygodnie. Teraz utknąłem w błocie."

Ale kiedy faktycznie zacząłem nad tym pracować, uznałem, że to nie jest tak trudne, jak się wydaje.

Właśnie zbudowałem system z wszystkimi tymi funkcjami w MNIEJ NIŻ 2 GODZINY!

documind-home-page.png

Dashboard DocumindStrona organizacji Documind

Pokażę Ci dokładnie, jak zaprojektować i wdrożyć taki system od podstaw - a będziesz zdziwiony, jak to naprawdę proste w 2025 roku z nowoczesnymi narzędziami i właściwym podejściem architektonicznym.

Pełny kod źródłowy jest dostępny na końcu tego artykułu. Zanurzmy się w to!

Zaczniemy od produktu SaaS do dokumentacji AI o nazwie DocuMind.

DocuMind to produkt SaaS do dokumentacji AI zaprojektowany w modelu multi-tenant, aby wspierać indywidualnych użytkowników, małe firmy i przedsiębiorstwa.

Platforma zapewnia potężne możliwości AI dla zarządzania dokumentami, w tym automatyczne generowanie streszczeń, ekstrakcję kluczowych punktów i inteligentne rekomendacje treści w organizacjach.

Jakie funkcje są wymagane dla uwierzytelniania i autoryzacji SaaS?

Najpierw przejrzyjmy niezbędne wymagania. Jakie funkcje są potrzebne?

Architektura multi-tenant

Aby umożliwić architekturę multi-tenant, będziesz potrzebować warstwy jednostek zwanej organizacją. Wyobraź sobie posiadanie pojedynczej puli użytkowników, którzy mogą uzyskać dostęp do wielu przestrzeni roboczych. Każda organizacja reprezentuje przestrzeń roboczą, a użytkownicy utrzymują jedną tożsamość, uzyskując dostęp do różnych przestrzeni roboczych (organizacji) na podstawie przypisanych ról.

multi-tenant-app-architecture.svg

Jest to szeroko stosowana funkcja u dostawców uwierzytelniania. Organizacja w systemie zarządzania tożsamością odpowiada przestrzeni roboczej, projektowi lub najemcy Twojej aplikacji SaaS.

organization-examples.png

Członkostwo

Członek to tymczasowa koncepcja używana do wskazania statusu członkostwa tożsamości w organizacji.

Na przykład, Sarah rejestruje się w Twojej aplikacji używając jej e-maila [email protected]. Może należeć do różnych przestrzeni roboczych. Jeśli Sarah jest częścią Przestrzeni Roboczej A, ale nie Przestrzeni Roboczej B, jest uważana za członka Przestrzeni Roboczej A, ale nie Przestrzeni Roboczej B.

Projektowanie ról i uprawnień

W architekturze multi-tenant użytkownicy potrzebują ról ze specyficznymi uprawnieniami do uzyskania dostępu do zasobów swojego najemcy. Uprawnienia są szczegółowymi kontrolami dostępu, które definiują konkretne akcje, takie jak read: order lub write: order. Określają, jakie działania można podjąć na określonych zasobach.

Role to zestaw uprawnień przypisanych członkom w środowisku multi-tenant.

Będziesz musiał zdefiniować te role i uprawnienia, a następnie przypisać role użytkownikom, a czasami może to obejmować zautomatyzowane procesy. Na przykład:

  1. Użytkownicy, którzy dołączają do organizacji, automatycznie otrzymują rolę członka.
  2. Pierwszy użytkownik, który tworzy przestrzeń roboczą, jest automatycznie przypisywany do roli administratora.

Proces rejestracji i logowania

Zapewnij przyjazny dla użytkownika i bezpieczny proces rejestracji i uwierzytelniania, w tym podstawowe opcje logowania i rejestracji:

  1. Logowanie za pomocą e-maila i hasła: Tradycyjna metoda logowania z użyciem e-maila i hasła.
  2. Logowanie bez hasła: Użyj kodów weryfikacyjnych e-maila dla łatwego i bezpiecznego dostępu.
  3. Zarządzanie kontem: Centrum konta, gdzie użytkownicy mogą aktualizować swój e-mail, hasło i inne szczegóły.
  4. Logowanie przez serwis społecznościowy: Opcje takie jak Google i GitHub dla szybkiego logowania.
  5. Uwierzytelnianie wieloskładnikowe (MFA): Popraw bezpieczeństwo, umożliwiając logowanie przez aplikacje uwierzytelniające, takie jak Duo.

Tworzenie i zapraszanie najemcy

W aplikacji SaaS multi-tenant kluczowa różnica w przepływie użytkowników polega na konieczności wspierania tworzenia najemców i zaproszeń członków. Ten proces wymaga starannego planowania i wykonania, ponieważ odgrywa kluczową rolę w aktywacji i rozwoju produktu.

Oto kilka typowych przepływów użytkowania, które trzeba wziąć pod uwagę:

Typ użytkownikaPunkt wejścia
Nowe kontoWejście z rejestracji lub logowania, aby utworzyć nowego najemcę
Istniejące kontoUtwórz kolejnego najemcę w produkcie
Konto istniejące otrzymało zaproszenie do nowego najemcyWejście z rejestracji lub logowania
Konto istniejące otrzymało zaproszenie do nowego najemcyWejście z e-maila z zaproszeniem
Nowe konto otrzymało zaproszenie do nowego najemcyWejście z rejestracji lub logowania
Nowe konto otrzymało zaproszenie do nowego najemcyWejście z e-maila z zaproszeniem

Oto kilka scenariuszy znalezionych w prawie każdej aplikacji SaaS. Użyj ich jako odniesienia, aby zainspirować swój zespół produktowy i projektowy i śmiało twórz własne przepływy według potrzeb.

Nowe konto tworzy najemcęIstniejący użytkownik tworzy kolejnego najemcę
Istniejący użytkownik loguje się Istniejący użytkownik dołącza przez e-mail
Nowy użytkownik loguje sięNowy użytkownik dołącza przez e-mail

Architektura techniczna i projekt systemu

Po zrozumieniu wszystkich wymagań produktowych, przejdźmy do realizacji.

Zdefiniuj strategię uwierzytelniania

Uwierzytelnianie wydaje się straszne. Użytkownicy potrzebują:

  • Rejestracja/login za pomocą e-maila i hasła
  • Logowanie jednym kliknięciem za pomocą Google/Github
  • Resetowanie hasła, gdy o nim zapomną
  • Logowanie na poziomie zespołu dla klientów korporacyjnych
  • ...

Implementacja tylko tych podstawowych funkcji może zająć tygodnie pracy deweloperskiej.

Ale teraz, nie musimy budować TEGO wszystkiego sami!

Nowoczesni dostawcy usług uwierzytelniania (tym razem wybiorę Logto) zapakowali wszystkie te funkcje dla nas. Proces uwierzytelniania jest prosty:

Od tygodni pracy deweloperskiej do 15 minut konfiguracji, Logto obsługuje dla nas wszystkie skomplikowane przepływy! Omówimy kroki integracji w sekcji wdrożenia później. Teraz możemy skupić się na budowaniu głównych funkcji DocuMind!

Ustanów architekturę multi-tenant

System organizacji umożliwia użytkownikom tworzenie i dołączanie do wielu organizacji. Zrozummy podstawowe relacje:

W tym systemie każdy użytkownik może należeć do wielu organizacji, a każda organizacja może mieć wielu członków.

Włącz kontrolę dostępu w aplikacji multi-tenant

Kontrola dostępu oparta na rolach (RBAC) jest ważna dla zapewnienia bezpieczeństwa i skalowalności w aplikacjach SaaS multi-tenant.

W aplikacji multi-tenant projektowanie uprawnień i ról jest zazwyczaj zgodne, ponieważ wynika z projektu produktu. Na przykład, w wielu przestrzeniach roboczych zazwyczaj istnieje rola administratora i rola członka. Logto jako dostawca usług uwierzytelniania ma następujący poziomowy system kontroli dostępu opartej na rolach:

  1. Zunifikowane definicje uprawnień: Uprawnienia są zdefiniowane na poziomie systemu i zastosowane konsekwentnie we wszystkich organizacjach, zapewniając zachowanie i konserwację jednolitego zarządzania uprawnieniami
  2. Szablony organizacji: Przeddefiniowane kombinacje ról i uprawnień przez szablony organizacji, upraszczające inicjalizację organizacji

Relacja uprawnień wygląda w ten sposób:

Ponieważ każdy użytkownik potrzebuje własnej roli w każdej organizacji, relacja między rolami a organizacjami musi odzwierciedlać przypisane role dla każdego użytkownika:

Zaprojektowaliśmy system organizacji i system kontroli dostępu, teraz możemy zacząć budować nasz produkt!

Stos technologiczny

Wybrałem stos przyjazny dla początkujących i przenośny:

  1. Frontend: React (łatwy do przeniesienia na Vue/Angular/Svelte)
  2. Backend: Express (prosty, intuicyjny interfejs API)

Dlaczego rozdzielamy frontend i backend? Ponieważ ma jasną architekturę, łatwo się uczy i łatwo można zmienić stosy. Jako przykład użyłem Logto jako dostawcy usług uwierzytelniania.

I dla poniższych przewodników, wzorce tutaj działają z: dowolnym frontendem, dowolnym backendem i dowolnym systemem uwierzytelniania.

Dodaj podstawowy przepływ uwierzytelniania do swojej aplikacji

To najłatwiejszy krok. Wystarczy zintegrować Logto z naszym projektem. Następnie możemy skonfigurować metody logowania/rejestracji użytkowników w Konsoli Logto według naszych potrzeb.

Zainstaluj Logto w swojej aplikacji

Najpierw zaloguj się do Logto Cloud. Możesz zarejestrować się na darmowe konto, jeśli go nie masz. Utwórz najemcę deweloperskiego do testów.

W Konsoli najemcy kliknij przycisk "Aplikacja" po lewej. Następnie wybierz React, aby rozpocząć budowanie naszej aplikacji.

Postępuj zgodnie z instrukcją na stronie. Możesz zakończyć integrację Logto w około 5 minut!

Oto mój kod integracyjny:

documind-home-page.png

Oto przydatna sztuczka: nasza strona logowania ma zarówno przyciski Zaloguj się, jak i Zarejestruj się. Przycisk Zarejestruj się prowadzi bezpośrednio do strony rejestracji Logto. To działa dzięki funkcji first screen Logto. Określa, który krok przepływu uwierzytelniania użytkownicy widzą jako pierwszy.

Możesz domyślnie przejść na stronę rejestracyjną, gdy Twój produkt oczekuje wielu nowych użytkowników.

Po kliknięciu logowania przejdziesz na stronę logowania Logto. Po pomyślnym zalogowaniu (lub rejestracji) gratulacje! Twoja aplikacja ma swojego pierwszego użytkownika (Ciebie)!

I wywołaj funkcję signOut z hooka useLogto, aby wylogować użytkownika, kiedy chcesz.

Dostosuj metody logowania i rejestracji

W Konsoli Logto kliknij "Doświadczenie logowania" w lewym menu. Następnie kliknij kartę "Rejestracja i logowanie". Na tej stronie postępuj zgodnie z instrukcjami, aby skonfigurować metody logowania/rejestracji w Logto.

sign-in-experience-settings.png

A przepływ logowania będzie wyglądał tak:

Strona logowania Logto

Włącz uwierzytelnianie wieloskładnikowe

Z Logto, włączanie MFA jest proste. Wystarczy kliknąć przycisk "Uwierzytelnianie wieloskładnikowe" w Konsoli Logto. Następnie włącz je na stronie Multi-factor authentication.

mfa-settings.png

A przepływ MFA będzie wyglądał tak:

Krok weryfikacji MfaSkanowanie kodu QR w aplikacji uwierzytelniającej

Wszystko jest tak proste! Ustawiliśmy skomplikowany system uwierzytelniania użytkowników w zaledwie kilka minut!

Dodanie doświadczenia organizacji multi-tenant

Teraz mamy naszego pierwszego użytkownika! Jednak ten użytkownik nie należy jeszcze do żadnej organizacji, a my nie stworzyliśmy żadnych organizacji.

Logto zapewnia wbudowane wsparcie dla multi-tenancy. Możesz utworzyć dowolną liczbę organizacji w Logto. Każda organizacja może mieć wielu członków.

Każdy użytkownik może uzyskać informacje o swojej organizacji z Logto. To umożliwia wsparcie dla multi-tenancy

Uzyskaj informacje o organizacji użytkownika

Aby uzyskać informacje o organizacji użytkownika z Logto, wykonaj te dwa kroki:

Deklaracja dostępu do informacji o organizacji w Konfiguracji Logto. Jest to zrobione przez ustawienie odpowiednich scopes i resources.

Użyj metody fetchUserInfo Logto, aby uzyskać informacje o użytkowniku, w tym dane organizacyjne.

Po ukończeniu tych kroków, musisz się wylogować i zalogować ponownie. Jest to konieczne, ponieważ zmodyfikowaliśmy żądany zasięg i zasób.

W tej chwili nie stworzyłeś jeszcze żadnych organizacji. Użytkownik też nie dołączył do żadnych organizacji. Dashboard pokaże "Nie masz jeszcze żadnej organizacji".

dashboard-no-orgs.png

Następnie stworzymy organizację dla naszych użytkowników i dodamy ich do niej.

Dzięki Logto nie musimy budować kompleksowych relacji organizacyjnych. Wystarczy utworzyć organizację w Logto i dodać do niej użytkowników. Logto obsługuje całą złożoność za nas. Istnieją dwa sposoby tworzenia organizacji:

  1. Ręczne tworzenie organizacji poprzez Konsolę Logto
  2. Użycie API zarządzania Logto do tworzenia organizacji, zwłaszcza przy projektowaniu przepływu SaaS umożliwiającego użytkownikom tworzenie własnych organizacji (przestrzeni roboczych).

Stwórz organizację w konsoli Logto

Kliknij przycisk "Organizacje" w lewym menu Konsoli Logto. Stwórz organizację.

Teraz masz swoją pierwszą organizację.

console-organizations.png

Następnie dodajmy użytkownika do tej organizacji.

Przejdź do strony szczegółów organizacji. Przełącz na kartę Członkowie. Kliknij przycisk "+ Dodaj członka". Wybierz swojego użytkownika z lewej listy. Kliknij przycisk "Dodaj członków" w prawym dolnym rogu. Teraz dodałeś pomyślnie użytkownika do tej organizacji.

console-add-member-to-orgs.png

Odśwież stronę aplikacji. Zobaczysz, że użytkownik teraz należy do organizacji!

dashboard-has-orgs.png

Wdrożenie doświadczenia samoobsługowego tworzenia organizacji

Tworzenie organizacji w konsoli nie wystarczy. Twoja aplikacja SaaS potrzebuje przepływu, który pozwala użytkownikom końcowym łatwo tworzyć i zarządzać własnymi przestrzeniami roboczymi. Aby wdrożyć tę funkcjonalność, użyj API zarządzania Logto.

Dla wskazówek, zapoznaj się z dokumentacją Interact with Management API, aby skonfigurować komunikację API z Logto.

Zrozum przepływ interakcji uwierzytelniania organizacji

Weźmy jako przykład przepływ tworzenia organizacji. Oto jak działa proces tworzenia organizacji:

Ten przepływ ma dwa kluczowe wymagania uwierzytelnienia:

  1. Ochrona API usług backendowych:
    • Dostęp frontendu do naszego API usług backendowych wymaga uwierzytelnienia
    • Punkty końcowe API są chronione przez weryfikację tokenu dostępowego użytkownika Logto
    • Zapewnia, że tylko uwierzytelnieni użytkownicy mogą uzyskać dostęp do naszych usług
  2. Dostęp do API zarządzania Logto:
    • Usługa backendowa musi bezpiecznie wywołać API zarządzania Logto
    • Postępuj zgodnie z przewodnikiem Interact with Management API dla konfiguracji
    • Użyj uwierzytelniania Maszyna-do-Maszyny, aby uzyskać dane dostępu

Chroń swoje backendowe API

Najpierw stwórzmy punkt końcowy API w naszej usłudze backendowej do tworzenia organizacji.

Nasze API usług backendowych pozwala tylko uwierzytelnionym użytkownikom. Musimy użyć Logto, aby chronić nasze API. Musimy również znać informacje o bieżącym użytkowniku (jak identyfikator użytkownika).

W koncepcji Logto (i OAuth 2.0), nasza usługa backendowa działa jako serwer zasobów. Użytkownicy uzyskują dostęp do serwera zasobów DocuMind z tokenem dostępu z frontendu. Serwer zasobów weryfikuje ten token. Jeśli jest ważny, zwraca żądane zasoby.

Stwórzmy zasób API, który reprezentuje naszą usługę backendową.

Przejdź do Konsoli Logto.

  1. Kliknij przycisk "Zasoby API" po prawej.
  2. Kliknij "Utwórz zasób API". Wybierz Express w wyskakującym okienku.
  3. Wypełnij "DocuMind API" jako nazwa API. Użyj "https://api.documind.com" jako identyfikator API.
  4. Kliknij utwórz.

Nie martw się o ten identyfikator URL API. To tylko unikalny identyfikator dla Twojego API w Logto. Nie jest związany z rzeczywistym adresem URL Twojej usługi backendowej.

Zobaczysz samouczek dotyczący korzystania z zasobu API. Możesz postępować zgodnie z tym samouczkiem lub naszymi krokami poniżej.

Stwórzmy middleware requireAuth, aby chronić nasz POST /organizations punkt końcowy.

Aby używać tego middleware, potrzebujemy tych zmiennych środowiskowych:

  • LOGTO_JWKS_URL
  • LOGTO_ISSUER

Uzyskaj te zmienne ze swojego punktu końcowego Konfiguracji OpenID najemcy Logto. Odwiedź https://<your-tenant-id>.logto.app/oidc/.well-known/openid-configuration. Znajdziesz potrzebne informacje w zwróconym JSON:

Teraz użyj middleware requireAuth w naszym punkcie końcowym POST /organizations.

To chroni nasz punkt końcowy POST /organizations. Tylko użytkownicy z ważnymi tokenami dostępu Logto mogą uzyskać do niego dostęp.

Teraz możemy uzyskać token z Logto w naszym frontencie. Użytkownicy mogą tworzyć organizacje przez naszą usługę backendową za pomocą tego tokena. Middleware dostarcza także identyfikator użytkownika. To pomaga, gdy dodajemy użytkowników do organizacji.

W kodzie frontendowym zadeklaruj ten zasób API w konfiguracji Logto. Dodaj jego identyfikator do tablicy zasobów.

Jak wcześniej, użytkownicy muszą się ponownie zalogować po zaktualizowaniu konfiguracji Logto.

Na Dashboardzie uzyskaj Logto Token Dostępowy przy tworzeniu organizacji. Użyj tego tokena, aby uzyskać dostęp do naszego API usług backendowych.

Teraz możemy poprawnie uzyskać dostęp do naszego API usług backendowych DocuMind.

Wywołanie API zarządzania Logto

Zaimplementujmy tworzenie organizacji przy użyciu API zarządzania Logto.

Podobnie jak żądania frontendowe do usługi backendowej, żądania usługi backendowej do Logto wymagają tokenów dostępu.

W Logto używamy uwierzytelniania Maszyna-do-Maszyny dla tokenów dostępu. Zobacz Interact with Management API.

Przejdź do strony aplikacji w Konsoli Logto. Stwórz aplikację Maszyna-do-Maszyny. Przypisz rolę "Dostęp do API zarządzania Logto". Skopiuj punkt końcowy Tokenu, ID App i Secret App. Będziemy ich używać do uzyskiwania tokenów dostępu.

m2m-application.png

Teraz możemy uzyskać tokeny dostępu do API zarządzania Logto przez tę aplikację M2M.

Użyj tego tokenu dostępu, aby wywołać API zarządzania Logto.

Użyjemy tych API Zarządzania:

Teraz zaimplementowaliśmy tworzenie organizacji przez API zarządzania Logto. Możemy również dodawać użytkowników do organizacji.

Przetestujmy tę funkcję w Dashboardzie.

dashboard-create-org.png

I kliknij „Utwórz organizację”

dashboard-has-orgs.png

Utworzenie zakończone sukcesem!

Kolejnym krokiem byłoby zapraszanie użytkowników do organizacji. Na razie nie wdrożymy tej funkcji w naszym tutorialu. Już wiesz, jak użyć API Zarządzania. Możesz odnieść się do tego Tworzenie najemcy i zapraszanie jako odniesienie do projektu produktu i łatwo wdrożyć tę funkcję, postępując zgodnie z tym wpisem na blogu: Jak zaimplementowaliśmy współpracę użytkowników w aplikacji multi-tenant.

Wdrożenie kontroli dostępu w swojej aplikacji multi-tenant

Teraz przejdźmy do kontroli dostępu do organizacji.

Chcemy osiągnąć:

  • Użytkownicy mogą uzyskać dostęp tylko do zasobów należących do ich własnych organizacji: Można to zrobić za pomocą organisation token Logto
  • Użytkownicy mają określone role w organizacjach (zawierające różne uprawnienia) do wykonywania autoryzowanych działań: Można to zaimplementować za pomocą funkcji szablonu organizacji Logto

Zobaczmy, jak wdrożyć te funkcje.

Użycie tokena organizacji Logto

Podobnie jak wspomniany wcześniej token dostępu Logto, Logto wydaje token dostępu odpowiadający określonemu zasobowi. Użytkownicy używają tego tokenu, aby uzyskać dostęp do zasobów chronionych w usługach backendowych. W związku z tym Logto wydaje token organizacji odpowiadający określonej organizacji. Użytkownicy używają tego tokenu, aby uzyskać dostęp do chronionych zasobów organizacyjnych w usługach backendowych.

W aplikacji frontendowej możemy użyć metody getOrganizationToken Logto, aby uzyskać token do uzyskania dostępu do określonej organizacji.

Tutaj organizationId to identyfikator organizacji, do której należy użytkownik.

Przed użyciem getOrganization lub jakiejkolwiek funkcji organizacyjnej musimy upewnić się, że zasięg urn:logto:scope:organizations i zasób urn:logto:resource:organization są wprowadzone w konfiguracji Logto. Ponieważ już to zadeklarowaliśmy, nie będziemy tego powtarzać.

Na stronie organizacji używamy tokena organizacji do pobierania dokumentów w ramach organizacji.

W tej implementacji zwróć uwagę na dwa istotne punkty:

  1. Jeśli organizationId przekazana do getOrganizationToken nie jest identyfikatorem organizacji, do której należy obecny użytkownik, metoda ta nie będzie w stanie uzyskać tokenu, co zapewnia, że użytkownicy mogą uzyskać dostęp tylko do swoich własnych organizacji.
  2. Przy żądaniu zasobów organizacyjnych używamy tokena organizacji zamiast tokenu dostępu, ponieważ dla zasobów należących do organizacji chcemy użyć kontroli uprawnień organizacyjnych, a nie kontroli uprawnień użytkownika (lepiej to zrozumiesz, gdy wdrożymy API GET /documents później).

Następnie stwórzmy API GET /documents w naszej usłudze backendowej. Podobnie jak w przypadku ochrony API POST /organizations przez zasób API, używamy identyfikatorów zasobów specyficznych dla organizacji do ochrony API GET /documents.

Najpierw stwórzmy middleware requireOrganizationAccess, aby chronić zasoby organizacyjne.

Następnie użyjmy middleware requireOrganizationAccess, aby chronić API GET /documents.

W ten sposób zaimplementowaliśmy korzystanie z tokenów organizacji, aby uzyskać dostęp do zasobów organizacyjnych. W usłudze backendowej możesz pobrać odpowiednie zasoby z bazy danych na podstawie identyfikatora organizacji.

Niektóre oprogramowanie wymaga izolacji danych między organizacjami. Aby uzyskać dalsze omówienie i wdrożenie, możesz odnosić się do wpisu na blogu: Implementacja multi-tenancy z PostgreSQL: Ucz się na prostym, rzeczywistym przykładzie.

Wdrożenie projektu kontroli dostępu na poziomie organizacji opartego na rolach

Zaimplementowaliśmy korzystanie z tokenów organizacji, aby uzyskać dostęp do zasobów organizacyjnych. Następnie wdrożymy kontrolę uprawnień użytkowników w organizacjach za pomocą RBAC.

Załóżmy, że DocuMind ma dwie role: Administrator i Współpracownik.

Administratorzy mogą tworzyć i uzyskiwać dostęp do dokumentów, podczas gdy Współpracownicy mogą jedynie uzyskiwać dostęp do dokumentów.

Dlatego nasza Organizacja musi mieć te dwie role: Administrator i Współpracownik.

Administrator ma oba uprawnienia read:documents i create:documents, podczas gdy Współpracownik ma tylko uprawnienie read:documents.

  • Administrator
    • read:documents
    • create:documents
  • Współpracownik
    • read:documents

Tutaj wchodzi w grę funkcja szablonu organizacji Logto.

Szablon organizacji to szablon modelu kontroli dostępu dla każdej organizacji: definiuje role i uprawnienia, które mają zastosowanie do wszystkich organizacji.

Dlaczego szablon organizacji?

Ponieważ skalowalność jest jednym z najważniejszych wymagań dla produktów SaaS. Innymi słowy, to, co działa dla jednego klienta, powinno działać dla wszystkich klientów.

Przejdźmy do Konsoli Logto > Szablony organizacji > Uprawnienia organizacji i stwórzmy dwa uprawnienia: read:documents i create:documents.

org-template-permission.png

Następnie przejdź do karty ról organizacji, aby utworzyć dwie role użytkowników: Administrator i Współpracownik, i przypisać odpowiednie uprawnienia do tych ról.

organization-details.png

W ten sposób stworzyliśmy model uprawnień RBAC dla każdej organizacji.

Następnie idziemy na stronę szczegółów naszej organizacji, aby przypisać odpowiednie role do naszych członków.

org-template-role.png

Teraz nasi użytkownicy organizacji mają role! Możesz wykonać te kroki za pomocą API zarządzania Logto:

Teraz możemy wdrożyć kontrolę uprawnień użytkowników, sprawdzając ich uprawnienia.

W naszym kodzie musimy sprawić, aby token organizacji użytkownika zawierał informacje o uprawnieniach, a następnie zweryfikować te uprawnienia w backendzie.

W Logto konfiguracji kodu frontendowego musimy zadeklarować uprawnienia, agencias-tecnologicas-destacados-kit-digital-abanca.html.gdzieruh.marcom.comużytkownicysąnarażeniolanaogólny...żądanie w ramach organizacji. Dodajmy uprawnienia read:documents i create:documents do scopes.

Jak zwykle zaloguj się ponownie swoim użytkownikiem, aby te konfiguracje zaczęły obowiązywać.

Następnie w middleware requireOrganizationAccess backendu dodajemy weryfikację uprawnień użytkowników.

Następnie utwórz API POST /documents, i użyj middleware requireOrganizationAccess z konfiguracją requiredScopes, aby chronić to API i poprzedni API GET /documents.

W ten sposób zaimplementowaliśmy kontrolę uprawnień użytkowników, sprawdzając uprawnienia użytkowników.

W kodzie frontendowym możesz uzyskać informacje o uprawnieniach użytkowników przez dekodowanie tokenu organizacji lub wywołanie metody getOrganizationTokenClaims Logto.

Kontroluj elementy strony na podstawie uprawnień użytkowników przez sprawdzanie zakreślonych w claims.

Dodaj więcej funkcji aplikacji multi-tenant

Do tej pory zaimplementowaliśmy podstawowe funkcje użytkownika i organizacji w systemie SaaS multi-tenant! Jednak istnieją jeszcze funkcje, których nie omówiliśmy, takie jak dostosowywanie marki strony logowania dla każdej Organizacji, automatyczne dodawanie użytkowników z określonymi domenami e-mail do określonych organizacji i integracja funkcji SSO na poziomie przedsiębiorstwa.

Są to wszystkie funkcje wyjęte z pudełka, a więcej informacji o tych funkcjach znajdziesz w dokumentacji Logto.

Podsumowanie

Pamiętasz, jakie to było przytłaczające na początku? Użytkownicy, organizacje, uprawnienia, funkcje korporacyjne... wydawało się to niekończącą się górą do zdobycia.

Ale spójrz, co udało nam się osiągnąć:

  • Kompletny system uwierzytelniania z wieloma opcjami logowania i wsparciem MFA
  • Elastyczny system organizacji wspierający wiele członkostw
  • Kontrola dostępu oparta na rolach w ramach organizacji

I najlepsza część? Nie musieliśmy na nowo wynajdywać koła. Dzięki nowoczesnym narzędziom, takim jak Logto, przekształciliśmy coś, co mogło być miesiącami pracy deweloperskiej, w kilka godzin.

Kompletny kod źródłowy tego tutoriala jest dostępny pod adresem: Multi-tenant SaaS Sample.

To jest siła nowoczesnego rozwoju w 2025 roku - możemy skupić się na budowaniu unikalnych cech produktu, zamiast walczyć z infrastrukturą. Teraz Twoja kolej, aby zbudować coś niesamowitego!

Zapoznaj się z wszystkimi funkcjami Logto, od Logto Cloud po Logto OSS, na stronie internetowej Logto lub zarejestruj się Logto cloud już dziś.