Inicio de sesión SSO con Discourse

He revisado el artículo de Discourse Connect SSO (Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)).

Entiendo que podemos permitir que Discourse use nuestra API para validar la autenticación y también podemos enviar algunos parámetros personalizados. Corrígeme si me equivoco.

Lo que queremos es usar nuestra propia página de inicio de sesión (cuando los usuarios hagan clic en iniciar sesión en discourse.open…com, debería abrirse nuestra página de inicio de sesión “kan.open..com”). Y una vez que el inicio de sesión sea exitoso, debería ir al sitio de Discourse. Hemos visto que varios sitios como Twitter o Atlassian hacen lo mismo. ¿Podrían ayudarnos con más detalles sobre cómo se puede lograr lo mismo?

Eso es correcto si por “usar nuestra API” te refieres a “modificaremos nuestra API para que admita Discourse Connect”. Los detalles de cómo hacerlo se encuentran en los documentos que enlazaste. Si quieres que todos sean redirigidos inmediatamente en lugar de ver algo en tu foro, necesitarás activar la configuración del sitio “se requiere inicio de sesión”.

Hola Comunidad de Discourse,

Tengo una pregunta sobre la configuración de Discourse SSO (DiscourseConnect). ¿Hay alguna forma de incluir parámetros adicionales en la solicitud cuando Discourse accede a la URL de DiscourseConnect? Específicamente, quiero pasar datos del usuario en la solicitud a la URL de DiscourseConnect, como un token de usuario o un ID de usuario, que pueda usar para autenticar al usuario y completar el proceso de inicio de sesión SSO.

El desafío que enfrento es que los usuarios deben iniciar sesión dos veces, una vez en mi proyecto y nuevamente en Discourse, al conectarse a través de SSO. Idealmente, me gustaría optimizar el proceso para que si el usuario ya ha iniciado sesión en mi proyecto, no tenga que iniciar sesión nuevamente con las mismas credenciales en mi proyecto.

¿Existe alguna característica en Discourse o alguna práctica recomendada para manejar esto? Agradecería cualquier orientación o sugerencia para hacer que la experiencia SSO sea más fluida.

¡Gracias!

Se describe un enfoque para tratar esa situación en la sección “Hacer el proceso transparente para los usuarios autenticados” de este tema: Create a DiscourseConnect login link.

2 Me gusta

La primera vez que realizo un inicio de sesión SSO con Discourse, me gustaría saber si hay alguna API o método disponible que pueda proporcionarme datos del usuario, como un ID de usuario o un token, que pueda enviar a la API de Discourse. A cambio, Discourse incluiría esos datos, como el ID de usuario o el token, en la solicitud de URL de Discourse Connect.

Puedes usar el external_id que hayas configurado en la carga útil de DiscourseConnect para realizar una solicitud a la API de Discourse. Esa solicitud devolverá el objeto de usuario completo.

1 me gusta

No entiendes lo que quiero transmitir. No pregunto sobre la recuperación de detalles de usuario de Discourse después del inicio de sesión. Por favor, comprende el flujo completo de lo que estoy tratando de lograr y hazme saber si es posible con Discourse o si debo proceder con mi propio enfoque.

Actualmente, tengo un proyecto creado con el framework Laravel y quiero brindar a los usuarios acceso al foro de Discourse para recibir comentarios. He decidido implementar el inicio de sesión SSO para Discourse. Creé una cuenta de administrador de Discourse y habilité la configuración necesaria para el inicio de sesión SSO, incluida la habilitación de SSO, la configuración de la URL de redirección y la configuración del secreto.

Ahora, he agregado un botón de ‘Discourse Connect’ dentro de mi proyecto. Quiero que cuando los usuarios hagan clic en este botón, se registren o inicien sesión usando mis credenciales y se inicien sesión automáticamente en Discourse. Cuando los usuarios hacen clic en el botón ‘Discourse Connect’, los redirijo a la URL de mi comunidad base con el punto final de sesión/sso, que luego redirige de regreso a mi URL de Discourse Connect. Recibo los parámetros SSO y sig en la solicitud, que entiendo que son para validación. Sin embargo, necesito el user_id o algún identificador para recuperar los datos del usuario de mi base de datos para validar, autenticar e iniciar sesión del usuario en Discourse.

Mi pregunta es: ¿Existe una API o algún mecanismo en Discourse que pueda devolver el user_id junto con los parámetros SSO y sig en la solicitud? Esto es importante porque, sin recuperar los datos del usuario en la solicitud, tendría que hacer que el usuario inicie sesión nuevamente, lo que proporcionaría una mala experiencia de usuario. Esencialmente, cuando un usuario inicia sesión en mi proyecto y hace clic en el botón ‘Discourse Connect’, se activa la URL de Discourse Connect y recibo los parámetros SSO y sig. Para autenticar al usuario, necesito obtener los datos del usuario de la base de datos, pero esto requeriría que el usuario inicie sesión nuevamente, lo que quiero evitar.

Quiero una experiencia fluida donde, si el usuario ya ha iniciado sesión una vez, no necesita iniciar sesión nuevamente. Deberían poder acceder al foro de Discourse directamente con sus credenciales del proyecto.

No estoy seguro de si entiendo dónde está ocurriendo el problema.

¿Estás usando esta biblioteca para DiscourseConnect: GitHub - spinen/laravel-discourse-sso: Integrate Discourse SSO into Laravel?

Mirando ese código (laravel-discourse-sso/src/Controllers/SsoController.php at develop · spinen/laravel-discourse-sso · GitHub), no sé cómo está manejando el caso de un usuario que ya ha iniciado sesión en la aplicación Laravel.

1 me gusta