SSO dejó de funcionar 🤔

¡Hola a todos!

Estoy procesando la autenticación SSO en mi backend de PHP. Comienzo enviando una solicitud curl a mi URL de SSO (Communauté et formation pour entrepreneurs) para obtener el SSO Payload y el SIG, y luego procedo a crear mi propio payload para generar la URL de redirección correcta.

Aquí es donde se pone extraño…

Si accedo a Communauté et formation pour entrepreneurs desde mi navegador, copio y pego el SSO y el SIG en mi script, la URL de redirección final funciona correctamente.

Sin embargo, si lo obtengo mediante CURL, la redirección final muestra un mensaje de error y en mis registros aparece esto:

Verbose SSO log: Nonce has already expired

Estoy perdido… El problema pareció aparecer de la nada y ahora mis usuarios no pueden iniciar sesión.

¿Acaso Discourse cambió algo para evitar que los bots hagan ping a /session/sso?

Sí, ahora el nonce se adjunta a la sesión del usuario para el que se generó. Parece que el problema que estás experimentando está relacionado con esto:

En lugar de hacer una solicitud curl, se espera que el usuario que va a ser autenticado visite /session/sso, ya sea haciendo clic en el botón de Iniciar sesión del sitio o siendo redirigido a /session/sso desde tu aplicación. Cuando lo hagan, Discourse los redirigirá de nuevo a tu aplicación. El nonce que se encuentra en esa carga útil será válido.

Eso es lo que he tenido que hacer para solucionar el problema, pero eso rompe mi proceso de inicio de sesión asíncrono. :frowning: Realmente me gustaba hacerlo así.

También lo he intentado mediante Axios. Habría esperado que funcionara, ya que la solicitud proviene del cliente. Pero tampoco parece funcionar.

Si se te ocurre alguna forma de implementar un proceso de inicio de sesión asíncrono, ¡agradecería cualquier consejo! De todos modos, gracias por tu respuesta, se agradece mucho.