
Sprache 🇩🇪 Deutsch
Hintergrund
Implementierung
SSO-Zugriffskontrolle
Was ist Zugriffskontrolle? 
Mit FastComments SSO Access Control, manchmal als RBAC bezeichnet, können Benutzer darauf beschränkt werden, nur auf bestimmte Seiten oder Kommentar-Threads zuzugreifen. Zusätzlich,
können sich Benutzer nur gegenseitig @mention in derselben Gruppe.
Im Detail
Wir können Users und optional Pages in Gruppen einteilen.
Wenn Users in Gruppen eingeordnet werden und Limit Comments by SSO User Groups in den Widget-Einstellungen aktiviert ist, dann sehen Benutzer nur Kommentare von Benutzern in ihren eigenen Gruppen und können nur Benutzer in denselben Gruppen @mention.
Außerdem können Pages in Gruppen eingeordnet werden, und dann können Benutzer nur auf Kommentare von Seiten zugreifen, auf die sie Zugriff haben.
Wir nennen das "User-Level"-Gruppen im Gegensatz zu "Page-Level"-Gruppen.
Welche ist also die richtige für Sie?
Verwenden Sie User-Level-Gruppen, wenn...
- Sie denselben
urlId-Wert (Seiten-URL oder Artikel-ID) verwenden möchten, aber Kommentare nach Gruppe einschränken wollen. - Zum Beispiel möchten Sie Gruppen "New User" und "Veteran User" haben, und sie sollten niemals die Kommentare der jeweils anderen auf denselben Seiten sehen.
Verwenden Sie Page-Level-Gruppen, wenn...
- Ihre Gruppen spezifische Seiten haben.
- Zum Beispiel sollten Benutzer in der Gruppe "Public Pages" niemals Artikel der Gruppe "Top Secret" ansehen.
Wie es funktioniert 
FastComments Zugriffssteuerung funktioniert, indem Pages und Users den gewünschten Gruppen zugewiesen werden.
Eine Gruppe ist einfach ein String-Kennzeichen, wie GREEN oder abc-123.
Users und Pages sind nicht auf nur eine Gruppe beschränkt. Sie sind jeweils auf 100 bzw. 1000 Gruppen begrenzt.
Zugriff auf nicht autorisierte Seiten
Wenn ein Benutzer versucht, auf eine Seite zuzugreifen, auf die er keinen Zugriff hat, sieht er eine Fehlermeldung wie unten:
Der Meldungstext kann angepasst werden.
Die Spezifikation 
Die Definition, wie mehrere Benutzer interagieren, und deren Test ist kompliziert. Hier ist die folgende Spezifikation, der wir für die Zugriffskontrolle folgen, die Sie zum Testen Ihrer Implementierung verwenden können:
Seite mit null Gruppen-IDs, Benutzer mit null Gruppen-IDs - sollte Zugriff haben.
Seite mit null Gruppen-IDs, Benutzer mit Gruppen-IDs - sollte Zugriff haben.
Seite mit Gruppen-IDs, Benutzer mit null Gruppen-IDs - sollte Zugriff haben.
Seite mit Gruppen-IDs, Benutzer mit leerer Liste - sollte KEINEN Zugriff haben.
Seite mit Gruppen-IDs, Benutzer mit Gruppen-IDs - Schnittmenge vorhanden - sollte Zugriff haben.
Seite mit Gruppen-IDs, Benutzer mit Gruppen-IDs - Schnittmenge nicht vorhanden - sollte KEINEN Zugriff haben.
Seite mit leerer Liste von Gruppen-IDs (niemand hat Zugriff), Benutzer mit null - sollte KEINEN Zugriff haben.
SSO User A = Keine Gruppen-IDs definiert (null = voller Zugriff).
SSO User B = Keine Gruppen-IDs definiert (null = voller Zugriff).
A kann @B.
SSO User A = Keine Gruppen-IDs definiert (null = voller Zugriff).
SSO User B = Gruppen-IDs definiert.
A kann @B.
SSO User A = Gruppen-IDs definiert.
SSO User B = Keine Gruppen-IDs definiert (null = voller Zugriff).
A kann @B.
SSO User A = Gruppen-IDs = [a].
SSO User B = Gruppen-IDs = [b].
A kann NICHT @B.
SSO User A = Gruppen-IDs = [a].
SSO User B = Gruppen-IDs = [a, b].
A kann @B.
Implementierung 
Erwähnen von Benutzern in anderen Gruppen
Wenn zwei Benutzer zu zwei verschiedenen Gruppensätzen gehören und sich diese nicht überschneiden, können sie sich nicht gegenseitig @mention.
Wenn ein Benutzer manuell ein @mention eingibt und seinen Kommentar absendet, bleibt es als Klartext. Der andere Benutzer wird nicht markiert.
Verwaltung der Gruppen
Groups werden jeweils mit den API-Ressourcen Pages und SSOUsers definiert.
Die Pages API kann aufgerufen werden, um die Menge der Gruppen zu definieren, die Zugriff auf die Seite haben. Standardmäßig haben alle Gruppen und Benutzer, die keiner Gruppe angehören, Zugriff.
Ebenso kann die SSOUsers API aufgerufen werden, um die mit jedem Benutzer verknüpften Gruppen zu definieren.
Für beide Ressourcen gibt es keine Einschränkungen, wann die Gruppen gesetzt oder aktualisiert werden können.
Wenn es nur darum geht, zu verhindern, dass Benutzer sich gegenseitig mit @mention markieren, müssen die Pages nicht berücksichtigt werden.
Hinweis!
Das Definieren und Aktualisieren der SSO-Benutzergruppen erfordert nicht die Verwendung der API und kann stattdessen automatisch aktualisiert werden, indem die Gruppen-IDs im SSO-Payload definiert werden, der an das Kommentar-Widget übergeben wird. Bei großen Gruppenlisten wird dies jedoch nicht empfohlen, da der Benutzer dieses Payload bei jedem Seitenaufruf übermitteln müsste.
Beispiel-API-Aufrufe 
Hier führen wir durch den Aufruf der FastComments API zur Einrichtung der Zugriffskontrolle.
Bevor wir beginnen, beachten Sie, dass wir keine Group-Struktur explizit erstellen müssen. Gruppen sind einfach Identifikatoren,
die zu Users und Pages hinzugefügt werden. Das Hinzufügen einer Gruppe zu einem Benutzer oder einer Seite „erstellt" die Gruppe automatisch.
Zuerst erstellen wir zwei Benutzer, User A und User B, die wir zunächst in Group X anlegen:


Jetzt erstellen wir eine Page. Wir nennen sie unsere Confidential Page, und bisher haben keine dieser Benutzer Zugriff darauf, da sie
in der Gruppe CONFIDENTIAL sein wird:

Die Benutzer A und B haben derzeit KEINEN Zugriff auf die neue Seite. Da sie sich jedoch in derselben Gruppe, GROUP-X, befinden, können sie sich gegenseitig @mention.
Lassen Sie uns User B aktualisieren, damit er nun auf die Seite zugreifen kann:

User B gehört nun beiden Gruppen an. Unsere Benutzer können sich weiterhin gegenseitig @mention, aber nur User B kann unsere vertrauliche Seite anzeigen.
Lassen Sie uns es so einrichten, dass User B nur die vertrauliche Seite anzeigen kann:

Jetzt kann er die vertrauliche Seite anzeigen, aber keiner unserer Benutzer kann den anderen @mention, da sie sich in unterschiedlichen Gruppen befinden.
Allerdings wird jeder Benutzer, der nicht Teil der Zugriffskontrolle ist, auf unsere Seite zugreifen können. Um dies zu verhindern, stellen Sie sicher, dass keine SSO-Benutzer
ihre groupIds auf null gesetzt haben. Erstellen wir zum Beispiel User C, der auf alles zugreifen kann:

Durch das Setzen von groupIds auf null geben wir an, dass er nicht durch die Zugriffskontrolle eingeschränkt ist.
Erstellen wir nun eine Seite, auf die jeder Zugriff hat:

Durch das Setzen von accessibleByGroupIds auf null geben wir an, dass diese Page nicht durch die Zugriffskontrolle gesteuert wird, und beide Benutzer können darauf zugreifen.
Damit ist unser API-Durchlauf für die Zugriffskontrolle abgeschlossen.