Con múltiples instancias de Discourse que tienen login requerido activado y utilizan SSO, estamos experimentando redirecciones infinitas al iniciar sesión con Safari en iOS. Esto es lo que ocurre:
El usuario no ha iniciado sesión en Discourse ni en el sitio maestro de SSO.
El usuario navega a la instancia de Discourse.
Discourse redirige a la página de SSO.
La página de SSO solicita credenciales. El usuario inicia sesión.
El usuario queda atrapado en un bucle de redirección entre el sitio maestro de SSO y Discourse, hasta que Safari se rinde.
Si el usuario luego navega manualmente a Discourse nuevamente, ha iniciado sesión.
No puedo reproducir este comportamiento con Chrome en el escritorio.
Mientras un cliente está en el bucle de redirección, se generan múltiples entradas de Iniciado proceso SSO y Usuario iniciado sesión, por lo que parece que el proceso SSO tiene éxito, pero de alguna manera, tras completar SSO, Discourse redirige al usuario a otro inicio de sesión de SSO, en lugar de a la página de inicio.
Esto también afecta a instancias antiguas donde SSO funcionaba correctamente antes, por lo que no creo que se trate de un problema de configuración de Discourse.
¿Alguien tiene alguna idea de qué podría estar mal aquí?
I have seen this on sites that have the setting same site cookies set to Strict, if it is already on Lax recommend attempting to disable and see if it works around the Safari bug.
You are % correct. It was on Lax, the default. Changing it to Disabled fixed the issue immediately. (I assume this is a defense-in-depth thing, on top of your usual CSRF protections, so disabling it is not overly terrible for security?)
I’ve spent a very long time figuring out a similar issue was caused by this samsite=lax behaviour:
This fixes my issue - at least on macOS Mojave - so I assume it fixes it on iOS too. Thanks!
I’d also like to know people’s opinions on this.
What with this being the Mozilla Discourse and all, we don’t have a huge amount of traffic from Safari, so don’t want to make ourselves vulnerable to CSRF attacks for something which will benefit a very small proportion of our users.