Redirecionamento Omniauth JWT

Depois disso, consegui configurar o SSO com JWT.

Com a biblioteca discourse-omniauth-jwt, não tenho certeza de como redirecionar os usuários após o login.

Quando um usuário faz login no meu site, obtenho o JWT e também o loga no Discourse imediatamente. Ao final desse fluxo, ele acaba no site do Discourse em vez de retornar ao meu site.

Tentei verificar os métodos de redirecionamento da biblioteca omniauth, que incluem o parâmetro origin e o cookie destination_url desta fonte. Nenhum deles parece funcionar.

Talvez @eviltrout possa esclarecer isso.

EDIT: Acabei de perceber que estive olhando para duas bibliotecas diferentes: omniauth e os callbacks omniauth do Discourse. De qualquer forma, ainda não tenho certeza de como fazer isso funcionar.

Então, o problema aqui é:

  1. um usuário faz login no seu site
  2. você o redireciona para o Discourse para fazer login lá
  3. eles acabam logados no Discourse?

Acho que esse não é um caminho suportado. Em geral, um usuário estaria no Discourse, clicaria em “Login”, visitaria seu site para autenticação e seria redirecionado de volta. Se um usuário fizer login diretamente no seu site, ele deve permanecer no seu site.

Normalmente, fazemos isso mantendo o Discourse deslogado, mas quando eles clicam em “Login”, ele é redirecionado de volta sem precisar preencher o formulário de autenticação novamente.

Hmm, certo, faz sentido. Fazer login não faz muita coisa agora que eu penso, já que o embed não pode usar a sessão de autenticação.

Então, os embeds realmente utilizam a sessão de autenticação (ou o cookie de sessão) para mostrar ou ocultar tópicos privados do Discourse.

Esse fluxo de autenticação faz sentido, mas para começar, vou redirecionar as pessoas para o fórum do Discourse para fazer login em uma nova aba. Elas poderão acessar tópicos privados após uma atualização da página.