Creo que lo que está sucediendo es que cuando visitas una ruta como https://forum.example.com/session/sso?return_path=/t/some-slug/23, Discourse te redirige a la discourse connect url, independientemente de si has iniciado sesión en Discourse o no. Eso sucede aquí:
Se espera que el sitio proveedor de SSO maneje el caso de los usuarios que ya han iniciado sesión en el sitio. Así es como lo maneja el plugin WP Discourse:
Ese código (lo que sigue a la declaración else) maneja el caso de los usuarios que ya han iniciado sesión en WordPress. Se les redirige de nuevo a la URL que se proporciona a través del parámetro de consulta return_path. Por lo tanto, desde el punto de vista del usuario, se le lleva directamente a la URL de la ruta de retorno, pero lo que realmente sucede es que se le redirige al sitio proveedor de SSO y luego de vuelta a Discourse.
Creo que el problema en tu sitio es que tu código SSO no está manejando el caso de los usuarios que ya han iniciado sesión en el sitio.
No tengo las cosas configuradas para probar esto en este momento. Es posible que esté leyendo el código incorrectamente. Antes de mirar el código, pensé que se realizaba una verificación en el lado de Discourse para ver si el usuario ya había iniciado sesión en Discourse, pero no parece ser así como funciona.