Estou com problemas na autenticação do Google. Tenho um projeto no Google Cloud e, após mudar para o novo domínio, alterei também a URL de redirecionamento no Client ID lá, então atualmente está configurado como:
Agora, o problema. Ao tentar “cadastrar com o Google”, recebo este erro no Discourse:
https://forum.sugarmail.app/auth/failure?message=csrf_detected A autorização expirou ou você trocou de navegador. Por favor, tente novamente.
Quando o fórum estava sob o domínio antigo, forum.skymail.app, a autenticação do Google funcionava sem problemas.
Fiz o ./launcher rebuild app após alterar o domínio, garantindo que atualizei o domínio no app.yaml em DISCOURSE_HOSTNAME (na verdade, o fórum não carregava de forma alguma até que eu fizesse isso).
Normalmente, ao iniciar o fluxo de login, o cookie _forum_session é definido no seu navegador. No entanto, no seu site, isso não parece estar acontecendo.
Você tem algum plugin ou proxy que possa estar interferindo nos cookies do seu site?
Plugins - não, não estou usando nenhum. A única coisa que fiz após a instalação foi ativar a autenticação do Google (client id e secret) e habilitar “sempre usar https”.
Proxies - estou usando o nginx como proxy reverso (que também serve o site principal do aplicativo).
O Let’s Encrypt nas configurações do Discourse não está ativado. Portanto, o nginx dentro do container está servindo HTTP puro, e o nginx externo faz a terminação SSL.
Essa configuração é quase a mesma que eu tinha com o domínio antigo; a única diferença é o “force https”.
Ah, que pena, é “forçar HTTPS”, que eu tinha desativado anteriormente.
Ativei recentemente para evitar o aviso no Chrome sobre “conteúdo de página inseguro”, que ocorria devido a links HTTP simples para imagens.
Para reforçar, eu faço a terminação SSL no nginx “externo” e, no que diz respeito ao próprio Discourse, não há SSL.
Desativar “forçar HTTPS” faz com que a autenticação do Google volte a funcionar (tive que adicionar uma URL de redirecionamento HTTP simples no projeto do Google Cloud).
Mas isso não é bom, pois haverá avisos de “site inseguro” ou conteúdo misto assim que houver imagens.
Existe uma maneira de manter a autenticação do Google funcionando com “forçar HTTPS” e terminação SSL fora do Discourse?
( Eu usaria o próprio suporte a SSL do Discourse, exceto que ele assume que “possui” o domínio, então eu precisaria configurar um endereço IP adicional para este VPS e separar o site principal e o fórum… o que é um pouco trabalhoso… )
Obrigado, @riking. Copiei o bloco do nginx do seu link exatamente como estava e, em seguida, ativei a opção “forçar HTTPS”, conforme recomendado pelo console de administração do Discourse.
Meu fórum está de volta no ar e funcionando, e a autenticação do Google está operante.
No entanto, ainda persiste um problema:
Tanto o Chrome quanto o Firefox estão exibindo avisos sobre conteúdo de página inseguro.
Ao analisar o rastreamento de rede nas ferramentas de desenvolvedor do Chrome, verifiquei que se trata deste link (HTTP simples, não HTTPS):