Añadir enlaces a Discourse que permitan a los usuarios autenticarse vía SSO o acceder a grupos privados directamente si ya han iniciado sesión

Tengo un sitio de WordPress que es el proveedor de SSO para Discourse utilizando el plugin WPDiscourse. El foro es público, pero tiene algunos grupos privados.

Cuando quiero agregar botones que lleven a los usuarios desde mi sitio de WordPress a un Grupo privado en Discourse, utilizo la URL de SSO como se menciona aquí, para que los usuarios no terminen en la página “Oops! Esa página no existe o es privada”.

Pero cuando los usuarios ya se han autenticado a través de SSO en Discourse, y regresan y hacen clic en los mismos botones, llegarán a la página de inicio de sesión nuevamente, incluso si seleccionaron la casilla “Recuérdame” durante el inicio de sesión. Idealmente, podrían navegar libremente a los grupos privados una vez que se hayan autenticado en Discourse SSO.

¿Hay una mejor manera de configurar esto?
Pensé en agregar un código a la página de inicio de sesión de WP y verificar si el usuario ya ha iniciado sesión en Discourse, y si es así, redirigir a la página en el argumento “return_path” de la URL. ¿Sería esa la solución? Si es así, ¿qué funciones o llamadas a la API podría usar para lograrlo?

¡Gracias!

1 me gusta

Si los usuarios ya han iniciado sesión en su sitio de WordPress, esto no debería estar sucediendo. ¿Puede aclarar si a los usuarios a los que les está sucediendo esto han iniciado sesión en WordPress? Si han iniciado sesión, se espera que sean redirigidos silenciosamente a la URL de Discourse que ha establecido en el argumento return_path.

3 Me gusta

Hola @rodrigo.braga :slight_smile:

Yo también estoy un poco confundido. Si pudieras confirmar lo siguiente:

Configuración

Wordpress está configurado como el proveedor de DiscourseConnect para Discourse siguiendo las instrucciones aquí:

Escenario 1

  1. Un usuario está en tu sitio de Wordpress y no ha iniciado sesión en Wordpress.
  2. El usuario hace clic en un enlace en Wordpress con el formato https://discourse.example.com/session/sso?return_path=/g/private_group
  3. Se le pide al usuario que inicie sesión en Wordpress.
  4. El usuario inicia sesión en Wordpress.
  5. El usuario es redirigido a https://discourse.example.com/g/private_group
  6. El usuario ve private_group porque ahora ha iniciado sesión en Discourse a través de DiscourseConnect y es miembro de private_group.

¿Es ese el caso actualmente?

Escenario 2

  1. Un usuario está en tu sitio de Wordpress y ha iniciado sesión en Wordpress.
  2. El usuario hace clic en un enlace en Wordpress con el formato https://discourse.example.com/session/sso?return_path=/g/private_group
  3. Se le pide al usuario que inicie sesión en Wordpress.

¿Es ese el caso actualmente?

3 Me gusta

Gracias Simon, sí, el usuario ha iniciado sesión en WordPress.

Lo extraño en mi escenario es que tengo un sitio principal de WP (WPSite1) que es el Proveedor de DiscourseConnect para Discourse usando WP Discourse,

Luego tengo un segundo sitio de WP (WPSite2) que sincroniza la base de datos de usuarios con WPSite1 usando el plugin WP Remote User Synch.

Sin embargo, no sé por qué interferiría con el comportamiento esperado que mencionaste, porque cuando inicio sesión en WPSite2 y luego navego a WPSite1, ya he iniciado sesión en WPSite1 también.

Pero lo que está sucediendo es que, incluso después de iniciar sesión en WPSite1, que es el Proveedor de DiscourseConnect, y hago clic en una URL como https://discourse.example.com/session/sso?return_path=/g/private_group, me lleva al formulario de inicio de sesión SSO de WP.

1 me gusta

Gracias, Angus,

El escenario 2 es el caso.
Revisaré las instrucciones, pero creo que todo está configurado correctamente ya que el inicio de sesión SSO funciona, el problema es que la página de inicio de sesión no reconoce que el usuario ya está autenticado.

1 me gusta

Hola @simon y @angus, gracias de nuevo, encontré lo que estaba mal.

Al revisar la configuración de DiscourseConnect, noté que la URL de DiscourseConnect estaba configurada como https://mydomain.org, y miré las recomendaciones en el plugin de Discourse WP, y decía que usara https://www.mydomain.org… Cuando actualicé con www, comenzó a funcionar como se esperaba.

Gracias.

2 Me gusta

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