
Sprache 🇩🇪 Deutsch
Hintergrund
Implementierung
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 Schritt für Schritt durch, wie man die FastComments API aufruft, um die Zugriffskontrolle einzurichten.
Bevor wir beginnen: Es ist nicht erforderlich, eine Group-Struktur explizit zu erstellen. Gruppen sind einfach Bezeichner
added to Users and Pages. Adding a group to a user or page automatically "creates" the group.
Zuerst erstellen wir zwei Benutzer, User A und User B; wir beginnen damit, sie in Group X zu platzieren:


Erstellen wir nun eine Page. Wir nennen sie unsere Confidential Page; bisher hat keiner dieser Benutzer Zugriff darauf, da sie in der Gruppe CONFIDENTIAL sein wird:

Benutzer A und B haben derzeit KEINEN Zugriff auf die neue Seite. Da sie jedoch in derselben Gruppe GROUP-X sind, können sie sich gegenseitig @mentionen.
Aktualisieren wir User B, damit er jetzt Zugriff auf die Seite hat:

User B gehört jetzt beiden Gruppen an. Unsere Benutzer können sich weiterhin gegenseitig @mentionen, aber nur User B kann unsere vertrauliche Seite ansehen.
Stellen wir es so ein, dass User B nur die vertrauliche Seite ansehen kann:

Jetzt kann er die vertrauliche Seite ansehen, aber keiner unserer Benutzer kann sich gegenseitig @mentionen, da sie in unterschiedlichen Gruppen sind.
Jeder Benutzer, der nicht Teil der Zugriffskontrolle ist, kann jedoch auf unsere Seite zugreifen. Um dies zu verhindern, stellen Sie sicher, dass keinem SSO-Benutzer groupIds auf null gesetzt ist. Erstellen wir zum Beispiel User C, der Zugriff auf alles hat:

Indem wir groupIds auf null setzen, geben wir an, dass sie nicht durch Zugriffskontrolle eingeschränkt sind.
Erstellen wir nun eine Seite, auf die jeder Zugriff hat:

Indem wir accessibleByGroupIds auf null setzen, geben wir an, dass diese Page nicht über Zugriffskontrolle gesteuert wird, und beide Benutzer können darauf zugreifen.
Damit ist unsere API-Anleitung zur Zugriffskontrolle abgeschlossen.