Deutsch
  • saas
  • zusammenarbeit
  • organisationen
  • rbac
  • multi-tenancy

Hinter den Kulissen: Wie wir die Nutzerzusammenarbeit in einer Multi-Tenant-App umsetzen

Praktiken und Einblicke in die Implementierung einer Einladungs- und Zugriffsverwaltung wie die Zusammenarbeit mit Logto Cloud in einer Multi-Tenant-Anwendung.

Charles
Charles
Developer

Hintergrund

Letzte Woche haben wir das Zusammenarbeits-Feature auf Logto Cloud vorgestellt. Falls du es verpasst hast, schau es dir an! Jetzt kannst du Kollegen und Mitarbeiter zu deinen bestehenden Logto-Mandanten einladen und gemeinsam am Identitätssystem für deine Anwendungen arbeiten.

In diesem Feature-Release haben wir zwei Rollen zu jedem Logto-Mandanten hinzugefügt:

  • Admin: Vollständiger Zugriff auf den Mandanten, einschließlich der Verwaltung identitätsbezogener Ressourcen, Einladen und Verwalten anderer Mitglieder, Abwicklung der Abrechnung und Einsicht in die Abrechnungshistorie.
  • Mitarbeiter: Kann identitätsbezogene Ressourcen verwalten, hat jedoch keinen Zugriff auf andere Admin-Funktionen.

In Übereinstimmung mit unserem Versprechen, unsere eigenen Werkzeuge zu nutzen, haben wir unser RBAC (Rollenbasierte Zugriffskontrolle) und Organisations-Feature für den Aufbau der Nutzerzusammenarbeit eingesetzt. Wenn du neu bei RBAC bist, schau dir unseren früheren Beitrag an, um loszulegen.

In diesem Blogbeitrag werfen wir einen Blick darauf, was in die Implementierung dieses Features eingeflossen ist und wie diese Praktiken nützlich sein könnten, wenn du Multi-Organisations-Anwendungen entwickelst.

Logto Clouds Zusammenarbeit basiert auf Logto-Organisationen

Jeder Logto Cloud-Mandant fungiert in unserem System als eigenständige Organisation, unterstützt von unserem eigenen Organisations-Feature. Um die Admin- und Mitarbeiterrollen des Mandanten einzuführen, haben wir zwei Organisationsrollen in der Organisationstemplate erstellt, die jeweils mit einem bestimmten Satz von Organisationsberechtigungen ausgestattet sind.

Organisationsrollen
Organisationsscope

Einladungen mit der Logto-Verwaltungs-API verwalten

Wir haben eine Reihe von einladungsbezogenen Verwaltungs-APIs im Organisations-Feature bereitgestellt. Mit diesen APIs kannst du zum Beispiel:

  • POST /api/organization-invitations eine Organisationseinladung an eine E-Mail-Adresse erstellen und senden
  • GET /api/organization-invitations & GET /api/organization-invitations/{id} deine Einladungen abrufen
  • PUT /api/organization-invitations/{id}/status die Einladung annehmen oder ablehnen, indem du den Einladungsstatus aktualisierst

Weitere Details findest du in der vollständigen API-Dokumentation.

Verbinde dich mit deinem E-Mail-Connector

Da Einladungen per E-Mail gesendet werden, stelle sicher, dass dein E-Mail-Connector richtig konfiguriert ist. In diesem Release haben wir eine neue E-Mail-Vorlagennutzungsart, OrganizationInvitation, eingeführt, die die Anpassung der Einladungsvorlage ermöglicht.

Beispiel einer Einladung per E-Mail

Diese E-Mail-Vorlage akzeptiert standardmäßig eine {{link}}-Variable, die der Link zur Logto-Console-Startseite ist, auf der die Nutzer die Einladung annehmen und einem Logto-Mandanten beitreten können. Eine der Startseiten in Logto Cloud sieht so aus wie im Screenshot unten:

Einladungs-Startseite

Weitere Details zum Versenden der Einladung per E-Mail über die Verwaltungs-API findest du in der API-Dokumentation.

RBAC zur Verwaltung von Nutzerberechtigungen nutzen

Mit den oben genannten Einstellungen können wir Einladungen per E-Mail senden und die Eingeladenen können der Organisation mit der zugewiesenen Rolle beitreten.

Nutzer mit unterschiedlichen Organisationsrollen haben unterschiedliche Scopes (Berechtigungen) in ihren Zugriffstoken. Daher sollten sowohl die Clientanwendung (Logto-Konsole) als auch unsere Backend-Dienste diese Scopes überprüfen, um sichtbare Funktionen und zulässige Aktionen zu bestimmen.

Alles scheint soweit verbunden zu sein, aber was fehlt uns noch?

Umgang mit Scope-Updates in Zugriffstoken

Das Verwalten von Scope-Updates in Zugriffstoken umfasst:

  • Zurückziehen bestehender Scopes: Beispielsweise reduziert das Herabstufen eines Admins zu einem Mitarbeiter automatisch die Scopes im neuen Zugriffstoken, das mit dem vorhandenen Refresh-Token erhalten wird.
  • Neue Scopes gewähren: Umgekehrt erfordert die Beförderung eines Nutzers zum Admin das Auslösen eines erneuten Logins oder Zustimmungsvorgangs, um die Änderung in den Zugriffstoken des Nutzers zu reflektieren.

In Logto Cloud prüft die Konsole aktiv die Scopes der Nutzer durch SWR Anfragen, und wir erteilen automatisch Zustimmung, sobald ein Nutzer zum Admin befördert wird.

Wenn du ein ähnliches Feature mit RBAC implementierst, benötigst du einen Mechanismus (z. B. WebSocket oder Server-Push-Ereignisse), um deine Anwendung über Scope-Updates zu benachrichtigen, sodass entsprechende erneute Zustimmung möglich ist oder neue Zugriffstoken ausgegeben werden. Logto wird in zukünftigen Updates auch weitere Webhooks bereitstellen, um dabei zu helfen.

Zusammenfassung

Logto Clouds Multi-Tenancy- und Zusammenarbeits-Features basieren auf unserem Organisations-Feature. Wenn du eine ähnliche Multi-Tenancy-App entwickelst, solltest du in Betracht ziehen, dieses Feature mit ähnlichen Ansätzen zu nutzen.

Ich hoffe, dieser Blogbeitrag erweist sich als aufschlussreich. Bei Fragen oder Diskussionen kannst du gern unserem Discord-Kanal beitreten.