Mi código para esto aún no está en vivo, pero si el usuario es redirigido a través de otro servidor (con Discourse como proveedor de SSO), entonces habrá una sesión en ese servidor externo. Creé una ruta allí, algo como /auth/is-authenticated, que devuelve el estado del usuario. Básicamente está ahí para eliminar los botones de “iniciar sesión” cuando el usuario ya ha iniciado sesión. Cuando el usuario cierra sesión en Discourse, creo que un webhook lo cierra sesión en el otro servidor. No he revisado el código desde hace un tiempo, pero creo que así es como lo configuré.