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.
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.
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-mailGET /api/organization-invitations
&GET /api/organization-invitations/{id}
uzyskać swoje zaproszeniaPUT /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.
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:
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.