Você pode fazer isso com o DiscourseConnect (com o Discourse funcionando como provedor de autenticação): Use Discourse as an identity provider (SSO, DiscourseConnect).
Ainda não tentei, mas o parâmetro prompt pode ser útil para o seu caso:
prompt: Seprompt=none, então a solicitação SSO é tratada como uma solicitação de “apenas verificação”. Se o navegador/dispositivo já estiver logado no Discourse, o Discourse retornará uma resposta SSO bem-sucedida contendo informações de autenticação do usuário, como de costume. Se o navegador/dispositivo não estiver logado, o Discourse não pedirá ao usuário para fazer login e retornará imediatamente uma resposta SSO contendo o parâmetrofailed=trueem vez de informações do usuário. Isso fornece um mecanismo para consultar se o usuário está logado, sem nunca direcionar o usuário para uma caixa de diálogo de login, caso ele não esteja.