Problemas de redirección SSO

Estoy integrando Discourse con Wordpress a través del plugin WP Discourse y utilizando Wordpress como proveedor de Discourse Connect. Sin embargo, me encuentro con un problema en el que un usuario no autenticado que visita la instancia de Discourse y hace clic en cualquier botón que requiera inicio de sesión se queda atascado en un bucle de redirección infinito.

El comportamiento deseado es: el usuario hace clic en el botón de inicio de sesión de Discourse → el usuario es redirigido a la página de inicio de sesión de Wordpress → el usuario se autentica y es redirigido de vuelta a la página de Discourse en la que estaba antes. Actualmente no hay problemas si un usuario ya está autenticado y visita la instancia de Discourse después de haberse autenticado. Este error aparece cuando un usuario no autenticado visita primero la instancia de Discourse.

El comportamiento actual es: el usuario hace clic en un botón de inicio de sesión de Discourseel usuario es dirigido a https://[discourse-instance]/session/sso?return_path=%2Ft%2F[página de Discourse en la que estaba el usuario antes]%2F16 → el usuario es dirigido a https://[wordpress-site]/?sso=[token SSO]%3D%3D&sig=[token de firma] → el usuario es dirigido a https://[wordpress-site]/?sso=[token SSO]%3D%3D&sig=[token de firma]&redirect_to=%2F%3Fsso%[token SSO]%253D%253D%26sig%3D[token de firma] → y el ciclo continúa recursivamente hasta que el navegador arroja un error de “demasiadas redirecciones”.

No he podido encontrar un hilo con una solución para esto, el más cercano es

pero tenemos SSL habilitado en todas partes y este problema ocurre en todos los navegadores. ¿Alguna sugerencia sobre cómo solucionar este problema?

Chrome 97 se lanzó con un error relacionado con el manejo de cookies durante las redirecciones, que se sabe que interrumpe DiscourseConnect en algunas circunstancias. Mientras esperamos que Google implemente una solución, hemos agregado una solución alternativa a Discourse. Actualizar tu sitio de Discourse a la última versión debería resolver el problema. ¿Puedes intentarlo y decirnos si funciona?

(La solución alternativa se agregó en este commit)

3 Me gusta

Gracias por la respuesta, acabo de comprobar para asegurarme de que estamos en la última versión, pero desafortunadamente el error sigue ahí. Estamos alojando nuestro foro con Discourse, por lo que debería actualizarse regularmente. El error sigue siendo el mismo que antes, ¿hay algo más que deba intentar? ¿Hay configuraciones dentro del alojamiento de Discourse que puedan estar causando esto?

1 me gusta

Hola @dbwhite, ¿podrías por favor

  1. habilitar los “Registros detallados de DiscourseConnect” en la configuración de “DiscourseConnect” de WP Discourse
  2. reproducir el problema
  3. ir a “Registros” en WP Discourse y “Descargarlos”

Luego envíame los registros por mensaje privado y echaré un vistazo más de cerca a lo que está sucediendo. Ten en cuenta que los registros no contienen información de identificación personal ni secretos.

2 Me gusta

@angus, @dbwhite, una posible causa del problema podría ser si el sitio de WordPress está utilizando Woocommerce. Woocommerce añade una redirección de inicio de sesión que puede causar problemas con DiscourseConnect. Esas redirecciones se pueden sobrescribir instalando y activando GitHub - scossar/wp-discourse-woocommerce-support: Integrates the wp-discourse plugin with WooCommerce, o añadiendo los fragmentos de código que se dan en el archivo Léeme de ese plugin al tema del sitio.

El problema de redirección que se describe aquí parece similar a lo que he visto con otros sitios de Woocommerce en el pasado. En esos casos, se ha resuelto instalando el plugin de WordPress al que enlacé.

Si esta es la causa del problema, me pregunto si deberíamos considerar añadir soporte para Woocommerce directamente al plugin WP Discourse.

4 Me gusta

Eso sería extremadamente útil.

No estoy teniendo el problema exacto que el OP ha descrito, pero estoy chocando contra un muro al redirigir a nuestros usuarios de regreso a donde estaban, en los foros de Discourse, después de iniciar sesión :disappointed_face:

¿La instalación y activación del plugin WP Discourse WooCommerce Support resuelve el problema para ti?

Solo quería publicar una actualización aquí, resulta que uno de los complementos que estábamos usando estaba interfiriendo con el valor de retorno de la función wp_login_url() de Wordpress. ¡Una vez que se eliminó ese complemento, todo funcionó como se esperaba!

1 me gusta

Se dividió una publicación en un nuevo tema: Error de Rails al usar DiscourseConnect y Wordpress