Has anyone succeeded in using discourse as sso provider for nextcloud? Share recipe?

Hi all - I am interested in setting up a few small community sites with discourse plus nextcloud for document and media content sharing. It would be loverly and preferable to have SSO with discourse as SSO provider. If anyone has succeeded in doing this and can share a recipe here on how to do it I’d appreciate it. Thanks! :seedling:

The communities I am looking at creating are for my own geographically dispersed family, my neighborhood, and my son’s school.

I might also be interested in setting up a nextcloud for the organization I work for that already has an active community website. Though my organization’s community uses discourse, it uses wordpress as SSO auth now. Down the pike I’m also interested in flipping that around so we can benefit from features reliant on discourse as SSO auth.

Edit: this seems to be the page - I will be exploring this today and will let others know what I come up with if anything. :slight_smile: Any guidance along the way much appreciated.

https://docs.nextcloud.com/server/11/admin_manual/configuration_server/sso_configuration.html

1 me gusta

i’ve quite the same usecases, where i want to use discourse as the SSO provider for nextcloud.

are there any updates on this?

2 Me gusta

Not that I am aware of. Could you ask at the nextcloud community?

it’s not a perfect implementation, but it does its job for me:

https://github.com/paroga/user_discourse

6 Me gusta

La aplicación de inicio de sesión social tiene soporte para Discourse a partir de la versión 4.10.

3 Me gusta

¡Genial! Veo que Discourse no se proporciona como un “proveedor de autenticación integrado” para la aplicación de inicio de sesión social en Nextcloud. Hay varias formas de configurarlo usando Discourse, ¿cómo lo hiciste? ¿Te importaría proporcionar una receta?

También veo que la aplicación te permite heredar grupos del proveedor de autenticación, lo cual es bastante bueno. Me encantaría poder hacer esto con mi configuración de Discourse/Nextcloud.

También hay otras aplicaciones de Nextcloud que parecen relevantes aquí, pero no las he probado todas. Está la aplicación OpenID Connect Login. También existe una aplicación de Discourse SSO, pero parece estar desactualizada/sin probar.

Como escribí en mi publicación, necesitas la versión 4.10. Luego hay una opción “Custom Discourse” en la configuración del inicio de sesión social.

Solo tiene soporte para OpenID Connect, que no es proporcionado por Discourse.

Eso es para la otra dirección, si quieres iniciar sesión en Discourse con tu cuenta de Nextcloud.

3 Me gusta

¡Gracias, Patrick! He vuelto a instalar la aplicación y veo la opción “Custom Discourse”. Aún no está explicado en la documentación, por eso pensé que nada había cambiado. Además, en la página https://apps.nextcloud.com/apps/sociallogin hay un enlace roto al foro de soporte de nextcloud, así que me cuesta averiguar dónde hablar de esta aplicación con los desarrolladores.

Ahora la tengo funcionando, pero el mayor problema que tengo es que no puedo averiguar cómo habilitar esto como el único método para iniciar sesión para todos los usuarios existentes por defecto.

El segundo mayor problema es que los detalles del usuario no se transfieren correctamente de Discourse a Nextcloud. Los nuevos usuarios creados en Nextcloud obtienen un nombre de usuario generado automáticamente en el formato [nombre interno]-[id de usuario], por lo que en el caso de mi sitio, por ejemplo, kb2-3797. El nombre se transfiere, pero otros detalles del perfil deben rellenarse de nuevo en Nextcloud. El avatar tampoco se transfiere.

También me pregunto cómo configurará el usuario su nombre de usuario y contraseña para el cliente de escritorio o móvil, cuando este sea el único método de inicio de sesión para la aplicación web de Nextcloud. Supongo que tendrán que saber ir a las preferencias de su cuenta en la aplicación web de Nextcloud para configurar las credenciales de inicio de sesión de Nextcloud.

Otras cosas que he notado:

  • la configuración de la aplicación no se accede a través de la sección apps, sino a través de la barra lateral de configuración de administración. Me tomó un minuto encontrarla. :slight_smile:
  • hay tres secciones en la configuración de administración para la aplicación, y las secciones superior e inferior tienen botones de guardar, pero la del medio (para proveedores personalizados) no. No está claro cuál usar para guardar la configuración personalizada de Discourse. Respuesta: ambas funcionan de la misma manera.
  • hay muchas configuraciones de aplicaciones. estas parecen funcionar mejor para mi configuración:
    • disable auto create new users = permite que se creen nuevos usuarios en Nextcloud si existen en Discourse
    • create users with disabled account = no deshabilita los usuarios recién creados
    • allow users to connect social logins with their account = permite a los usuarios existentes optar por iniciar sesión a través de Discourse (:warning: no puedo averiguar cómo permitir por defecto que los usuarios inicien sesión a través de Discourse)
    • update user profile every login = sincroniza los grupos de Discourse con los grupos de Nextcloud cada vez que inician sesión. (:warning: no sincroniza correctamente el nombre de usuario, el nombre, la biografía y otra información del perfil)
    • do not prune not available user groups on login (:warning: no sé qué hace esto, pero está habilitado por defecto. Sospecho que evita eliminar al usuario de los grupos existentes de Nextcloud si no están mapeados desde Discourse)
    • automatically create groups if they do not exist = deshabilitado porque crea nombres de grupo feos que replican grupos que sí quieres (ver abajo)
    • restrict login for users without mapped groups = deshabilitado
    • restict login for users without assigned groups = deshabilitado
    • disable notify admins about new users = deshabilitado porque me resulta útil ver cuándo se crean nuevos usuarios de Nextcloud
    • hide default login = anima a los usuarios a iniciar sesión a través de Discourse, aunque todavía es posible iniciar sesión directamente con el nombre de usuario/correo electrónico y contraseña de Nextcloud.
  • Perdí el acceso de administrador inmediatamente la primera vez que lo intenté, antes de crear mapeos de grupos. Para recuperarlo, tuve que ir a la línea de comandos y ejecutar occ group:adduser admin NOMBREDEUSUARIO
  • el mapeo de grupos funciona muy bien! Lo más importante fue agregar el mapeo de adminsadmin de Nextcloud para que los administradores de mi foro tengan privilegios de administrador en Nextcloud. También pude agregar mapeos para grupos utilizados para categorías seguras, para dar acceso también a carpetas seguras en Nextcloud relacionadas con esas categorías seguras.

¡Cada vez más cerca!

1 me gusta

Te sugiero GitHub.

En mi opinión, esa es la mejor manera de implementarlo, ya que el id se utiliza principalmente internamente y no es visible en muchos lugares para los usuarios normales.
Nextcloud no tiene una forma fácil de renombrar usuarios, pero Discourse sí. Renombrar un usuario en Discourse podría generar un comportamiento extraño con Nextcloud si los nombres ya no coinciden.

La avatar_url de DiscourseConnect debería pasarse a Nextcloud y leerse allí. Si también quieres pasar la bio, unas pocas líneas en la rama responsable de las actualizaciones de perfil deberían ser suficientes.

Deberías usar contraseñas de dispositivo en su lugar. La contraseña de Nextcloud podría ser diferente de la contraseña de Discourse, lo que llevaría a confusión y omitiría el SSO.

Creo que estos son problemas generales con la interfaz de usuario de Nextcloud y no específicos de la aplicación.

Establece la opción social_login_auto_redirect en true como se describe en la sección de configuración si quieres ocultar completamente el inicio de sesión de Nextcloud.

2 Me gusta

¡Genial! ¡Gracias, Patrick! Realmente aprecio la orientación.

He abierto un problema en GitHub sobre mi problema principal, que es que me gustaría que todos los usuarios iniciaran sesión a través de Discourse y actualmente no puedo hacerlo sin darles instrucciones sobre cómo cambiarse a Discourse a través de la preferencia de usuario social login connect.

Ahora he configurado social_login_auto_redirect como sugieres y funcionará bien una vez que todos estén configurados para usar Discourse. :+1: Por ahora, funciona bien para mí personalmente, pero no para nadie más que use estos sitios. No se les permitirá iniciar sesión. :sob:

No tengo 100% claro a qué te refieres con contraseñas de dispositivos. Miré el enlace que proporcionaste, pero las capturas de pantalla de las preferencias de usuario en esa página no se ven igual que en mi instancia de Nextcloud. ¿Quizás estamos en una versión diferente? Estoy en la 23.0.0, en el canal de actualización estable. :thinking: ¿O tal vez hay una aplicación que necesito instalar?

La sincronización del nombre de usuario, avatar y biografía es menos urgente, aunque sería bueno verla funcionando correctamente. No sé por qué no debería ser posible actualizar estos detalles para el usuario en cada inicio de sesión. Quizás haya idiosincrasias con Nextcloud que no funcionen bien con Discourse en este caso. Por ejemplo, Discourse solo permite un usuario por dirección de correo electrónico, mientras que parece que puedo crear un segundo usuario de Nextcloud con la misma dirección de correo electrónico a menos que lo evite usando la configuración de administrador Prevent creating an account if the email address exists in another account. Idealmente, simplemente conectaría automáticamente estas cuentas basándose en la dirección de correo electrónico.

1 me gusta

No estoy seguro de si entiendo correctamente tu problema actual, pero supongo que tu problema son los usuarios existentes que no tienen una “cuenta de inicio de sesión social conectada”. ¿Estaría todo bien cuando todos los usuarios estuvieran conectados?

Como ya escribiste, el correo electrónico no es único en Nextcloud y, por lo tanto, no se puede usar de forma segura para la asignación de usuarios.

Cuando cambié a la aplicación sociallogin, conecté a los usuarios existentes con una simple consulta SQL. Exporté la lista de usuarios de Discourse e inserté una asignación de [nombre interno]-[id de usuario] (por ejemplo, kb2-3797) a los nombres de usuario existentes de Nextcloud en la tabla sociallogin_connect en la base de datos de Nextcloud. Los campos que utilices para la asignación (por ejemplo, nombre de usuario o correo electrónico) dependen de tu configuración.

La captura de pantalla parece un poco desactualizada, pero tengo una tabla muy similar (incluido el “botón para crear una nueva contraseña específica del dispositivo”) cuando abro /settings/user/security en mi instancia estable de Nextcloud 23.0. ¿Puedes publicar una captura de pantalla de tu página?

2 Me gusta

No me llevará mucho tiempo solucionar el problema de mis usuarios existentes; solo tengo unos pocos en mi sitio. Pero en términos de una solución a largo plazo y replicable que funcione para todos los que buscan usar Discourse como proveedor de autenticación para Nextcloud, parece que tendría sentido permitir solo un usuario por dirección de correo electrónico y emparejarlos automáticamente según la dirección de correo electrónico. No debería ser necesario que los usuarios hagan nada para que esto suceda.

Así es como se ve mi página /settings/user/security.

1 me gusta

Hay una opción “Crear nueva contraseña de aplicación” justo al final de la página. Allí puedes crear nuevas credenciales para, por ejemplo, clientes de escritorio.

2 Me gusta

Ok, eso tiene sentido, aunque el idioma es un poco confuso. Creo que ahora lo entiendo. Para los nuevos usuarios que nunca han iniciado sesión directamente en nextcloud y quieren instalar la aplicación, necesitan usar el botón Crear nueva contraseña de aplicación para crear una nueva “contraseña de aplicación” para usarla. Idealmente, sería una contraseña por dispositivo, pero no tiene por qué serlo.

Seguiré haciendo un seguimiento en github para ver si puedo ayudar a aclarar la documentación y solucionar algunos de los problemas de integración. Pero por ahora, ¡diría que @paroga finalmente ha resuelto esta solicitud de soporte de 2017! :partying_face:

1 me gusta

Creo que puedes echar un vistazo al tutorial que he escrito.

Utilizo esta función para conectar mi NextCloud a mi Discourse.

1 me gusta

Este tema se cerró automáticamente 30 días después de la última respuesta. Ya no se permiten nuevas respuestas.