
Idioma 🇪🇸 Español
Antecedentes
Implementación
Control de acceso SSO
¿Qué es el control de acceso? 
Con el Control de Acceso SSO de FastComments, a veces denominado RBAC, los usuarios pueden estar restringidos para acceder únicamente a ciertas páginas o hilos de comentarios. Además, los usuarios solo pueden @mention entre ellos dentro del mismo grupo.
En detalle
Podemos colocar Users y opcionalmente Pages en grupos.
Cuando Users se colocan en grupos, y Limit Comments by SSO User Groups está habilitado en la Configuración del widget, entonces los usuarios solo verán comentarios de usuarios en sus mismos grupos y solo podrán @mention a usuarios en esos mismos grupos.
Además, Pages pueden colocarse en grupos, y entonces los usuarios solo podrán acceder a comentarios de páginas a las que tengan acceso.
Llamamos a esto "grupos a nivel de usuario" frente a "grupos a nivel de página".
Entonces, ¿cuál es el adecuado para usted?
Utilice grupos a nivel de usuario si...
- Desea usar el mismo valor
urlId(URL de la página, o ID del artículo), pero restringir los comentarios por grupo. - Por ejemplo, desea tener los grupos "Usuario nuevo" y "Usuario veterano", y que nunca vean los comentarios del otro en las mismas páginas.
Utilice grupos a nivel de página si...
- Sus grupos tienen páginas específicas.
- Por ejemplo, los usuarios en el grupo "Páginas públicas" nunca deberían ver artículos en los artículos "Top Secret".
Cómo funciona 
El control de acceso de FastComments funciona asignando Pages y Users a los grupos deseados.
Un grupo es simplemente un identificador de cadena, como GREEN o abc-123.
Users y Pages no están limitados a un solo grupo. Están limitados a 100 y 1000 grupos, respectivamente.
Acceso a páginas no autorizadas
Si un usuario intenta acceder a una página a la que no tiene acceso, verá un mensaje de error como el siguiente:
El texto del mensaje se puede personalizar.
La especificación 
Definir cómo interactúan múltiples usuarios y probarlo es complicado. A continuación está la especificación que seguimos para el control de acceso, que puede usar para probar su implementación:
Página con IDs de grupo nulos, usuario con IDs de grupo nulos - debería tener acceso.
Página con IDs de grupo nulos, usuario con IDs de grupo - debería tener acceso.
Página con IDs de grupo, usuario con IDs de grupo nulos - debería tener acceso.
Página con IDs de grupo, usuario con lista vacía - NO debería tener acceso.
Página con IDs de grupo, usuario con IDs de grupo - existe intersección - debería tener acceso.
Página con IDs de grupo, usuario con IDs de grupo - no existe intersección - NO debería tener acceso.
Página con lista vacía de IDs de grupo (nadie tiene acceso), usuario con null - NO debería tener acceso.
SSO User A = No se han definido IDs de grupo (null = acceso total).
SSO User B = No se han definido IDs de grupo (null = acceso total).
A puede @B.
SSO User A = No se han definido IDs de grupo (null = acceso total).
SSO User B = IDs de grupo definidos.
A puede @B.
SSO User A = IDs de grupo definidos.
SSO User B = No se han definido IDs de grupo (null = acceso total).
A puede @B.
SSO User A = IDs de grupo = [a].
SSO User B = IDs de grupo = [b].
A NO puede @B.
SSO User A = IDs de grupo = [a].
SSO User B = IDs de grupo = [a, b].
A puede @B.
Implementación 
Mención de Usuarios en Otros Grupos
Si dos usuarios pertenecen a dos conjuntos diferentes de grupos, y no hay intersección, no podrán @mention entre sí.
Si un usuario escribe manualmente un @mention y envía su comentario, permanecerá como texto sin formato. El otro usuario no será etiquetado.
Mantenimiento de los Grupos
Groups se definen mediante los recursos API Pages y SSOUsers, respectivamente.
La API Pages puede invocarse para definir el conjunto de grupos permitidos para acceder a la página. Por defecto, todos los grupos, y los usuarios que no pertenecen a un grupo, tienen acceso.
De forma similar, la API SSOUsers puede invocarse para definir los grupos asociados a cada usuario.
Para ambos recursos, no hay limitaciones respecto a cuándo se pueden establecer o actualizar los grupos.
Si solo se desea impedir que los usuarios se @mentionen entre sí, entonces no es necesario tener en cuenta Pages.
¡Nota!
Definir y actualizar los grupos de usuarios SSO no requiere usar la API, y en su lugar puede actualizarse automáticamente definiendo los ids de grupo en el payload SSO pasado al widget de comentarios. Sin embargo, para listas grandes de grupos, esto no se recomienda ya que el usuario tendría que enviar este payload en cada carga de página.
Ejemplos de llamadas a la API 
Aquí recorreremos el proceso de llamar a la API de FastComments para configurar el control de acceso.
Antes de comenzar, ten en cuenta que no tenemos que crear explícitamente una estructura Group. Los grupos son simplemente identificadores
añadidos a Users y Pages. Añadir un grupo a un usuario o página "crea" automáticamente el grupo.
Primero, creemos dos usuarios, User A y User B, los empezaremos en Group X:


Ahora creemos una Page. La llamaremos nuestra Confidential Page, y hasta ahora ninguno de estos usuarios tendrá acceso a ella, ya que estará
en el grupo CONFIDENTIAL:

Los usuarios A y B actualmente NO tienen acceso a la nueva página. Sin embargo, como están en el mismo grupo, GROUP-X, pueden @mentionarse entre sí.
Actualicemos User B para que ahora pueda acceder a la página:

User B ahora pertenece a ambos grupos. Nuestros usuarios todavía pueden @mentionarse entre sí, pero solo User B puede ver nuestra página confidencial.
Hagamos que User B solo pueda ver la página confidencial:

Ahora pueden ver la página confidencial, pero ninguno de nuestros usuarios puede @mentionarse entre sí, ya que están en grupos diferentes.
Sin embargo, cualquier usuario que no forme parte del control de acceso podrá acceder a nuestra página. Para evitar esto, asegúrate de que ningún SSO User tenga
sus groupIds establecidos en null. Por ejemplo, creemos User C, que tiene acceso a todo:

Al establecer groupIds en null, indicamos que no está limitado por el control de acceso.
Ahora, creemos una página a la que todos tengan acceso:

Al establecer accessibleByGroupIds en null, indicamos que esta Page no está controlada por el control de acceso, y ambos usuarios pueden acceder a ella.
Con esto completamos nuestro recorrido por la API para el Control de Acceso.