Puedes hacer esto con DiscourseConnect (con Discourse funcionando como el proveedor de autenticación): Use Discourse as an identity provider (SSO, DiscourseConnect).
Aún no lo he probado, pero el parámetro prompt podría ser útil para tu caso:
prompt: Siprompt=none, entonces la solicitud SSO se trata como una solicitud de “solo comprobación”. Si el navegador/dispositivo ya ha iniciado sesión en Discourse, Discourse devolverá una respuesta SSO exitosa con información de autenticación del usuario, como de costumbre. Si el navegador/dispositivo no ha iniciado sesión, entonces Discourse no pedirá al usuario que inicie sesión y devolverá inmediatamente una respuesta SSO con el parámetrofailed=trueen lugar de información del usuario. Esto proporciona un mecanismo para consultar si el usuario ha iniciado sesión, sin dirigir nunca al usuario a un cuadro de diálogo de inicio de sesión si no lo está.