Añadir soporte SCIM como proveedor de servicios

Como ya se mencionó aquí, creo que sería una buena característica si Discourse admitiera el protocolo SCIM. SCIM es un estándar propuesto por la IETF a través de RFC7644 y RFC7643 que tiene como objetivo proporcionar una solución para la gestión de usuarios/grupos a través de una simple API REST. Nuestro caso de uso sería gestionar las identidades de los usuarios y las membresías de los grupos a través de un servicio separado que actúe como cliente SCIM, Keycloak en nuestro caso. Discourse actuaría como proveedor de servicios SCIM. Además de cualquier SSO existente y la creación centralizada de cuentas, esto tendría las siguientes ventajas:

  • asignar usuarios a grupos;
  • cambiar la información del usuario inmediatamente en varias aplicaciones;
  • eliminar al usuario cuando se le elimina del SSO;
  • obtener la lista de usuarios o grupos de forma estándar;

Recibimos financiación de NGI a través de NLNet para implementaciones SCIM, puede leer la propuesta y sobre trabajos relacionados en nuestro foro aquí. Intentaré implementar una primera solución en un plugin de Discourse por ahora, pero sería bueno integrar esto en el núcleo de Discourse en algún momento. ¡Hágame saber sus pensamientos y opiniones!

5 Me gusta

Resulta extraño que su especificación utilice /Users y /Groups en lugar de algo como .well-known/scim/Users. Parece seguro que entrará en conflicto con las rutas existentes en muchas aplicaciones.

Estaría encantado de ayudar con eso si tiene algo de presupuesto.

Me imagino que si estuviera bien escrito y fuera ampliamente utilizado (o requerido por varios clientes empresariales), podría convertirse en un plugin oficial.

No me imagino que llegue a formar parte del núcleo; incluso OAuth2 es un plugin.

4 Me gusta

Creo que es posible usar cualquier ruta como prefijo para los puntos finales de SCIM, por ejemplo, api/scim/v2/Users o rutas conocidas que sugieras.

Sí, entiendo las preocupaciones con el núcleo, así que tal vez un objetivo pueda ser que se convierta en un plugin oficial. Gracias también por la oferta de ayuda, no hay presupuesto adicional, pero veamos en el futuro cómo se desarrolla esto.

1 me gusta

Ah. Eso tiene sentido. Supuse que debía ser así, pero no lo vi en mi lectura rápida. Echaría un vistazo a los otros plugins de autenticación como referencia.

Aquí tienes plugins oficiales con ‘auth’ en su nombre

discourse-apple-auth/                  discourse-microsoft-auth/
discourse-authentication-validations/  discourse-oauth2-basic/
discourse-auth-no-email/               discourse-vk-auth/
discourse-development-auth/            discourse-wikimedia-auth/

Suena como un proyecto interesante

1 me gusta

Ya está disponible una primera versión del plugin aquí:

El mapeo sigue siendo muy simple, solo funcionarán los campos básicos de usuarios y grupos. Probé con el plugin SCIM de keycloak y ya puedes añadir/modificar usuarios en Keycloak que luego se crearán/actualizarán en Discourse. El plugin SCIM de keycloak está aquí:

Cualquier comentario es muy bienvenido :slight_smile: Probaremos más con keycloak en nuestro entorno y todavía quiero probarlo con authentik.

4 Me gusta

Esto es genial, gran idea. Tengo muchas ganas de probarlo. ¡Gracias!

Sería genial si pudieras publicarlo como un tema en la categoría Plugin :slight_smile:

1 me gusta

En la categoría Plugin, el botón de publicar está deshabilitado para mí y veo el mensaje de que no tengo permiso para publicar en esa categoría.

Únete al grupo @plugin_authors. Eso te permite crear un tema en esa categoría.

Ah, gracias, envié una solicitud :slight_smile:

1 me gusta

… y finalmente publicado: SCIM Plugin

2 Me gusta