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.
Naucz się budować aplikację SaaS multi-tenant z solidnym uwierzytelnianiem, zarządzaniem organizacją i kontrolą dostępu opartą na rolach w zaledwie kilka godzin.
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ł:
"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!



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.
Najpierw przejrzyjmy niezbędne wymagania. Jakie funkcje są potrzebne?
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.
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.

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.
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:
Zapewnij przyjazny dla użytkownika i bezpieczny proces rejestracji i uwierzytelniania, w tym podstawowe opcje logowania i rejestracji:
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żytkownika | Punkt wejścia |
|---|---|
| Nowe konto | Wejście z rejestracji lub logowania, aby utworzyć nowego najemcę |
| Istniejące konto | Utwórz kolejnego najemcę w produkcie |
| Konto istniejące otrzymało zaproszenie do nowego najemcy | Wejście z rejestracji lub logowania |
| Konto istniejące otrzymało zaproszenie do nowego najemcy | Wejście z e-maila z zaproszeniem |
| Nowe konto otrzymało zaproszenie do nowego najemcy | Wejście z rejestracji lub logowania |
| Nowe konto otrzymało zaproszenie do nowego najemcy | Wejś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.






Po zrozumieniu wszystkich wymagań produktowych, przejdźmy do realizacji.
Uwierzytelnianie wydaje się straszne. Użytkownicy potrzebują:
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!
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.
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:
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!
Wybrałem stos przyjazny dla początkujących i przenośny:
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.
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.
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:

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.
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.

A przepływ logowania będzie wyglądał tak:
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.

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


Wszystko jest tak proste! Ustawiliśmy skomplikowany system uwierzytelniania użytkowników w zaledwie kilka minut!
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
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".

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:
Kliknij przycisk "Organizacje" w lewym menu Konsoli Logto. Stwórz organizację.
Teraz masz swoją pierwszą organizację.

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.

Odśwież stronę aplikacji. Zobaczysz, że użytkownik teraz należy do 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.
Weźmy jako przykład przepływ tworzenia organizacji. Oto jak działa proces tworzenia organizacji:
Ten przepływ ma dwa kluczowe wymagania uwierzytelnienia:
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.
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:
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.
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.

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:
POST /api/organizations: Utwórz organizację (zobacz: Create organization API reference)POST /api/organizations/{id}/users: Dodaj użytkowników do organizacji (zobacz: Add users to organization API reference)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.

I kliknij „Utwórz organizację”

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.
Teraz przejdźmy do kontroli dostępu do organizacji.
Chcemy osiągnąć:
organisation token LogtoZobaczmy, jak wdrożyć te funkcje.
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:
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.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.
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.
read:documentscreate:documentsread:documentsTutaj 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.

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.

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.

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.
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.
| Funkcje | Link do dokumentacji |
|---|---|
| Integracja SSO na poziomie przedsiębiorstwa | https://docs.logto.io/end-user-flows/enterprise-sso |
| Just-in-Time (JIT) Provisioning | https://docs.logto.io/organizations/just-in-time-provisioning |
| Dostosowanie brandingu na poziomie organizacji | https://docs.logto.io/customization/match-your-brand#organization-specific-branding |
| Uwierzytelnianie wieloskładnikowe (MFA) na poziomie organizacji | https://docs.logto.io/organizations/organization-management#require-mfa-for-organization-members |
| Zarządzanie na poziomie organizacji: | https://docs.logto.io/end-user-flows/organization-experience/organization-management |
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ąć:
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ś.