• SaaS
  • współpraca
  • organizacje
  • RBAC
  • wielodostępność

Za kulisami: Jak wdrażamy współpracę użytkowników w aplikacji wielodostępnej

Praktyki i wglądy w implementację funkcji zarządzania zaproszeniami i dostępem do ról, takich jak współpraca w Logto Cloud, w aplikacji wielodostępnej.

Charles
Charles
Developer

Tło

W zeszłym tygodniu wprowadziliśmy funkcję współpracy w Logto Cloud. Jeśli ją przegapiłeś, koniecznie sprawdź! Teraz możesz zaprosić swoich współpracowników do istniejących tenantów w Logto, współpracując nad utrzymaniem systemu tożsamości dla swoich aplikacji.

W tej wersji funkcji dodaliśmy dwie role do każdego tenanta w Logto:

  • Admin: Pełny dostęp do tenanta, w tym zarządzanie zasobami związanymi z tożsamością, zapraszanie i zarządzanie innymi członkami, obsługa rozliczeń i przeglądanie historii rozliczeń.
  • Współpracownik: Może zarządzać zasobami związanymi z tożsamością, ale nie ma dostępu do innych funkcji administracyjnych.

Zgodnie z naszym zobowiązaniem do używania własnych narzędzi, wykorzystaliśmy nasze RBAC (Role-Based Access Control) oraz funkcję Organizacji przy budowie współpracy użytkowników. Jeśli jesteś nowy w RBAC, sprawdź nasz wcześniejszy post, żeby zacząć.

W tym wpisie na blogu, przyjrzyjmy się, co składa się na implementację tej funkcji i w jaki sposób te praktyki mogą być dla ciebie korzystne, jeśli rozwijasz aplikacje wieloorganizacyjne.

Współpraca w Logto Cloud jest oparta na Logto Organizations

Każdy tenant w Logto Cloud funkcjonuje jako niezależna organizacja w naszym systemie, wspierana przez naszą funkcję Organizacji. Aby wprowadzić role administratora tenanta i współpracownika, stworzyliśmy dwie role organizacyjne w szablonie organizacji, każda z przypisanym określonym zestawem uprawnień organizacyjnych.

Role organizacji
Zakresy organizacji

Obsługa zaproszeń za pomocą Logto Management API

Udostępniliśmy zestaw API zarządzania związanych z zaproszeniami w funkcji organizacji. Dzięki tym API możesz na przykład:

  • POST /api/organization-invitations utworzyć i wysłać zaproszenie organizacyjne na adres e-mail
  • GET /api/organization-invitations & GET /api/organization-invitations/{id} uzyskać swoje zaproszenia
  • PUT /api/organization-invitations/{id}/status zaakceptować lub odrzucić zaproszenie poprzez aktualizację statusu zaproszenia

Po więcej szczegółów odsyłamy do pełnej dokumentacji API.

Połącz się ze swoim konektorem e-mail

Ponieważ zaproszenia są wysyłane za pomocą e-maila, upewnij się, że twój konektor e-mail jest odpowiednio skonfigurowany. W tej wersji wprowadziliśmy nowy typ użycia szablonu wiadomości e-mail, OrganizationInvitation, umożliwiający dostosowanie szablonu e-maila z zaproszeniem.

przykładowy e-mail zaproszeniowy

Ten szablon e-mail przyjmie domyślnie zmienną {{link}}, która jest odnośnikiem do strony głównej Logto Console, gdzie użytkownicy mogą przyjąć zaproszenie i dołączyć do tenanta Logto. Jedna ze stron głównych w Logto Cloud wygląda jak zdjęcie poniżej:

strona główna zaproszenia

Odnies się do dokumentacji API, aby uzyskać więcej szczegółów dotyczących wysyłania emaila z zaproszeniem za pomocą Management API.

Użyj RBAC do zarządzania uprawnieniami użytkowników

Dzięki powyższym ustawieniom możemy wysyłać zaproszenia za pomocą e-maila, a zaproszone osoby mogą dołączyć do organizacji z przypisaną rolą.

Użytkownicy z różnymi rolami w organizacji będą mieli różne zakresy (uprawnienia) w swoich tokenach dostępu. Zatem zarówno aplikacja kliencka (Logto Console), jak i nasze usługi backendowe powinny sprawdzać te zakresy w celu określenia widocznych funkcji i dozwolonych akcji.

Dobrze, na razie wszystko wydaje się połączone, a o czym jeszcze zapomnieliśmy?

Obsługa aktualizacji zakresów w tokenach dostępu

Zarządzanie aktualizacjami zakresów w tokenach dostępu obejmuje:

  • Cofanie istniejących zakresów: Na przykład, zdegradowanie administratora do współpracownika automatycznie ogranicza zakresy w nowym tokenie dostępu uzyskanym z istniejącym tokenem odświeżającym.
  • Przyznawanie nowych zakresów: Z drugiej strony, awansowanie użytkownika na administratora wymaga wywołania ponownego logowania lub procesu ponownej zgody, aby odzwierciedlić zmianę w tokenach dostępu użytkownika.

W Logto Cloud, Console aktywnie sprawdza zakresy użytkownika za pomocą zapytań SWR, a my automatycznie udzielamy zgody, gdy użytkownik jest awansowany na administratora.

Jeśli implementujesz podobną funkcję z RBAC, będziesz potrzebować mechanizmu (np. WebSocket lub zdarzeń push serwera) do powiadomienia twojej aplikacji o aktualizacjach zakresów, umożliwiając ponowne uzyskanie zgody lub wydania nowych tokenów dostępu odpowiednio. Logto również dostarczy więcej webhooków, które pomogą w tym w przyszłych aktualizacjach.

Podsumowanie

Funkcje współpracy i wielodostępności w Logto Cloud korzystają z naszej funkcji Organizacji. Jeśli rozwijasz podobną aplikację wielodostępną, rozważ wykorzystanie tej funkcji w podobny sposób.

Mam nadzieję, że ten wpis na blogu okazał się pomocny. Jeśli masz pytania lub chcesz podyskutować, dołącz do naszego kanału Discord.