
Langue 🇫🇷 Français (France)
Contexte
Implémentation
Contrôle d'accès SSO
Qu'est-ce que le contrôle d'accès ? 
Avec FastComments SSO Access Control, parfois appelé RBAC, les utilisateurs peuvent être restreints à n'accéder qu'à certaines pages, ou fils de commentaires. De plus, les utilisateurs ne peuvent @mention que d'autres utilisateurs du même groupe.
En détail
Nous pouvons placer Users et, éventuellement, Pages dans des groupes.
Lorsque des Users sont placés dans des groupes, et que Limit Comments by SSO User Groups est activé dans les Paramètres du widget, alors les utilisateurs ne verront que les commentaires d'utilisateurs appartenant aux mêmes groupes et pourront uniquement @mention des utilisateurs du même groupe.
De plus, les Pages peuvent être placées dans des groupes, et les utilisateurs ne peuvent alors accéder qu'aux commentaires des pages auxquelles ils ont accès.
Nous appelons cela des groupes « User-Level » par opposition aux groupes « Page-Level ».
Lequel vous convient ?
Utilisez des groupes User-Level si...
- Vous voulez utiliser la même valeur
urlId(URL de la page, ou ID de l'article), mais restreindre les commentaires par groupe. - Par exemple, vous voulez avoir des groupes « New User » et « Veteran User », et ils ne devraient jamais voir les commentaires l'un de l'autre sur les mêmes pages.
Utilisez des groupes Page-Level si...
- Vos groupes ont des pages spécifiques.
- Par exemple, les utilisateurs du groupe « Public Pages » ne devraient jamais consulter les articles « Top Secret ».
Comment cela fonctionne 
Le contrôle d'accès FastComments fonctionne en attribuant des Pages et des Users aux groupes souhaités.
Un groupe est simplement un identifiant de chaîne, comme GREEN ou abc-123.
Les Users et les Pages ne sont pas limités à un seul groupe. Ils sont limités à 100 et 1000 groupes, respectivement.
Accès aux pages non autorisées
Si un utilisateur tente d'accéder à une page à laquelle il n'a pas accès, il verra un message d'erreur, comme ci-dessous :
Le texte du message peut être personnalisé.
La spécification 
Définir la façon dont plusieurs utilisateurs interagissent, et le tester, est compliqué. Voici la spécification suivante que nous suivons pour le contrôle d'accès, que vous pouvez utiliser pour tester votre implémentation:
Page avec IDs de groupe null, utilisateur avec IDs de groupe null - devrait avoir accès.
Page avec IDs de groupe null, utilisateur avec des IDs de groupe - devrait avoir accès.
Page avec des IDs de groupe, utilisateur avec IDs de groupe null - devrait avoir accès.
Page avec des IDs de groupe, utilisateur avec une liste vide - NE devrait PAS avoir accès.
Page avec des IDs de groupe, utilisateur avec des IDs de groupe - intersection existe - devrait avoir accès.
Page avec des IDs de groupe, utilisateur avec des IDs de groupe - l'intersection n'existe pas - NE devrait PAS avoir accès.
Page avec une liste vide d'IDs de groupe (personne n'a accès), utilisateur avec null - NE devrait PAS avoir accès.
Utilisateur SSO A = Aucun ID de groupe défini (null = accès complet).
Utilisateur SSO B = Aucun ID de groupe défini (null = accès complet).
A peut @B.
Utilisateur SSO A = Aucun ID de groupe défini (null = accès complet).
Utilisateur SSO B = IDs de groupe définis.
A peut @B.
Utilisateur SSO A = IDs de groupe définis.
Utilisateur SSO B = Aucun ID de groupe défini (null = accès complet).
A peut @B.
Utilisateur SSO A = IDs de groupe = [a].
Utilisateur SSO B = IDs de groupe = [b].
A NE peut PAS @B.
Utilisateur SSO A = IDs de groupe = [a].
Utilisateur SSO B = IDs de groupe = [a, b].
A peut @B.
Implémentation 
Mentionner des utilisateurs dans d'autres groupes
Si deux utilisateurs appartiennent à deux ensembles de groupes différents, et qu'il n'y a aucune intersection, ils ne pourront pas se @mention mutuellement.
Si un utilisateur saisit manuellement un @mention et soumet son commentaire, cela restera du texte brut. L'autre utilisateur ne sera pas mentionné.
Gestion des groupes
Les Groups sont définis en utilisant respectivement les ressources API Pages et SSOUsers.
L'API Pages peut être invoquée pour définir l'ensemble des groupes autorisés à accéder à la page. Par défaut, tous les groupes, ainsi que les utilisateurs qui n'appartiennent à aucun groupe, ont accès.
De même, l'API SSOUsers peut être invoquée pour définir les groupes associés à chaque utilisateur.
Pour les deux ressources, il n'y a pas de limitation quant au moment où les groupes peuvent être définis ou mis à jour.
Si l'on souhaite uniquement empêcher que les utilisateurs se @mention mutuellement, alors les Pages n'ont pas à être prises en compte.
Remarque !
La définition et la mise à jour des groupes d'utilisateurs SSO ne nécessitent pas l'utilisation de l'API, et peuvent à la place être mises à jour automatiquement en définissant les ids de groupe dans le payload SSO transmis au widget de commentaires. Cependant, pour de longues listes de groupes, cela n'est pas recommandé car l'utilisateur devrait soumettre ce payload à chaque chargement de page.
Exemples d'appels d'API 
Nous allons voir ici comment appeler l'API FastComments pour configurer le contrôle d'accès.
Avant de commencer, notez que nous n'avons pas besoin de créer explicitement une structure Group. Les groupes sont simplement des identifiants
ajoutés aux Users et aux Pages. L'ajout d'un groupe à un utilisateur ou à une page « crée » automatiquement le groupe.
Commençons par créer deux utilisateurs, User A et User B, que nous placerons initialement dans le Group X :


Créons maintenant une Page. Nous l'appellerons notre Confidential Page, et pour l'instant aucun de ces utilisateurs n'y aura accès, car elle sera
dans le groupe CONFIDENTIAL :

Les utilisateurs A et B n'ont actuellement PAS accès à la nouvelle page. Cependant, comme ils sont dans le même groupe, GROUP-X, ils peuvent se @mention mutuellement.
Mettons à jour User B pour qu'il puisse désormais accéder à la page :

User B appartient maintenant aux deux groupes. Nos utilisateurs peuvent toujours se @mention mutuellement, mais seul User B peut consulter notre page confidentielle.
Faisons en sorte que User B ne puisse consulter que la page confidentielle :

Il peut désormais consulter la page confidentielle, mais aucun de nos deux utilisateurs ne peut se @mention mutuellement, car ils sont dans des groupes différents.
Cependant, tout utilisateur ne faisant pas partie du contrôle d'accès pourra accéder à notre page. Pour éviter cela, assurez-vous qu'aucun utilisateur SSO
n'ait ses groupIds définis à null. Par exemple, créons User C, qui a accès à tout :

En définissant groupIds à null, nous indiquons qu'il n'est pas soumis au contrôle d'accès.
Créons maintenant une page à laquelle tout le monde a accès :

En définissant accessibleByGroupIds à null, nous indiquons que cette Page n'est pas soumise au contrôle d'accès, et les deux utilisateurs peuvent y accéder.
Ceci conclut notre présentation de l'API pour le contrôle d'accès.