Comprobando si un usuario ha iniciado sesión en Discourse desde otro sitio web

Hola a todos,

Me gustaría limitar el acceso a ciertas páginas de nuestro sitio web en función de si alguien tiene una cuenta de miembro en nuestro Discourse privado. Presumiblemente, lo haría comprobando en esas páginas si el usuario ha iniciado sesión en Discourse en ese momento.

Creo que la herramienta adecuada para usar es: GitHub - discourse/discourse-auth-proxy: Un proxy http que utiliza el protocolo DiscourseConnect para autenticar usuarios

¿Hay alguna documentación paso a paso para usarlo?

¿Puedo instalarlo en la misma droplet de DigitalOcean que nuestro sitio de Discourse, o necesito alojarlo en otro lugar?

¿Podrían ayudarme con el uso de Discourse Auth Proxy?

Tengo Discourse en una instancia de Digital Ocean y un sitio web en PHP en un servidor separado.

Puedes hacer esto con DiscourseConnect (con Discourse funcionando como el proveedor de autenticación): Use Discourse as an identity provider (SSO, DiscourseConnect).

Aún no lo he probado, pero el parámetro prompt podría ser útil para tu caso:

  • prompt: Si prompt=none, entonces la solicitud SSO se trata como una solicitud de “solo comprobación”. Si el navegador/dispositivo ya ha iniciado sesión en Discourse, Discourse devolverá una respuesta SSO exitosa con información de autenticación del usuario, como de costumbre. Si el navegador/dispositivo no ha iniciado sesión, entonces Discourse no pedirá al usuario que inicie sesión y devolverá inmediatamente una respuesta SSO con el parámetro failed=true en lugar de información del usuario. Esto proporciona un mecanismo para consultar si el usuario ha iniciado sesión, sin dirigir nunca al usuario a un cuadro de diálogo de inicio de sesión si no lo está.
1 me gusta

Esto parece prometedor, @simon. No me había dado cuenta de que DiscourseConnect pudiera funcionar sin habilitar enable discourse connect, ¡pero aparentemente puede! :thinking:

Haré algunas pruebas y te informaré. ¡Gracias por ponerme en esta pista!

1 me gusta

Me pregunto si el uso de Discourse como proveedor de autenticación se pasa por alto debido a su nombre (DiscourseConnect). Por ejemplo, solo agregar el término DiscourseConnect a una publicación aquí crea un enlace al tema sobre el uso de un sitio externo como proveedor de autenticación para Discourse. Usar Discourse como proveedor de autenticación es una de mis principales justificaciones para tener un sitio de Discourse.

Por si acaso ayuda, el plugin de WordPress permite que Discourse funcione como proveedor de autenticación. El código relevante está aquí: wp-discourse/lib/sso-client at main · discourse/wp-discourse · GitHub. El código podría ser algo excesivamente complicado.

Aquí hay una implementación más sencilla para una aplicación Remix/React: discourse_remix_comments/app/routes/login.tsx at main · scossar/discourse_remix_comments · GitHub. Si ignoras las cosas de TypeScript, no tiene mucho.

3 Me gusta

@simon Solo quería responder y agradecerte. Creo que tu sugerencia anterior es la respuesta correcta. He tenido problemas para implementarla en mi sitio, pero el problema parece ser principalmente que es un CMS semi-personalizado con mucho código inestable que se interpone en el camino.

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.