Isso continua a ocorrer aleatoriamente para todos os usuários. Não aconteceu comigo, mas fui desconectado quando aconteceu com outra pessoa uma vez. Não tenho ideia de onde começar a procurar.
Tenho um tópico em andamento no meu fórum que tornei público para fornecer mais informações. Desta vez, 2 usuários ficaram logados como o mesmo usuário, um administrador e outro não. O usuário em que eles se tornaram nem está ativo.
@Falco Qualquer insight sobre onde procurar é apreciado.
@Falco este é um problema em andamento há vários anos. Pelo que sei, este é um problema com a sessão de usuário do lado do cliente e especificamente com o ID do usuário. Este problema só é contornado, mas não corrigido, se em vez do login local, ou seja, autenticação local, for usada a autenticação de terceiros.
Você pode confirmar que isso é causado por sua autenticação local inferior?
Com todo o respeito, existem muitos milhares de instalações do Discourse por aí na internet. Só em nossa hospedagem executamos milhares, e há muitas auto-hospedadas também, e sua instância é a única relatando este problema. Isso significa que seu problema é muito provavelmente autoinfligido.
Como você está executando um proxy reverso personalizado na frente do Discourse, eu começaria removendo isso e mudando para nossa configuração de instalação padrão abençoada antes de relatar o bug aqui.
Não tenho certeza do que torna minha configuração personalizada em comparação com o que está integrado ao Discourse, já que ambos são nginx. No entanto, não é possível para mim removê-lo, pois o Discourse não é a única coisa que estou hospedando. Tenho certeza de que é meu problema, mas se for possível que aconteça para mim, também é possível que aconteça para qualquer pessoa. Não tenho outros problemas com nenhum dos softwares que estou hospedando. Não estou pedindo que você me ajude aqui, mas não consigo encontrar nada de errado de outra forma.
Se não houver mais nenhuma visão que você possa oferecer sobre onde procurar, talvez você conheça alguém que possa. Tentei verificar os logs em ambos os contêineres, bem como em seus respectivos hosts. Não tenho certeza de onde mais procurar o que deu errado.
Eu posso entender a falta de suporte. Nós não somos clientes pagantes e alguns de nós nem mesmo estamos sendo muito simpáticos. Não te culpo por apontar o dedo para mim, pois concordo, é algo que estou fazendo de diferente que causa essa dor de cabeça. Se você realmente acredita que o proxy reverso é o que está causando esse problema, isso não seria um grande problema de segurança?
Eu não sei o que eu não sei sobre o funcionamento interno do discourse, mas para mim isso parece algo que deveria ser de interesse dos desenvolvedores.
Sim, é definitivamente um problema de segurança. Mas se isso acontece apenas nesta instância específica, é um problema de segurança no seu site, e não no Discourse, certo?
Ficarei feliz em ajudar aqui. Você estaria aberto a mover o site para um servidor separado por algumas semanas usando nossa instalação padrão para descartar quaisquer problemas de proxy reverso?
Se o meu proxy reverso for capaz de manipular algum token ou o que quer que seja da maneira certa, de modo que o Discourse acredite que um usuário se tornou outra pessoa… isso realmente importa se o problema estiver no proxy reverso? Isso não indicaria algo explorável em outro lugar?
Novamente, sem saber o que não sei sobre como a autenticação funciona.
Nós nos afastamos da hospedagem de terceiros devido ao aumento dos custos, mas pode haver outra maneira de lidar com isso. Vou investigar o proxy reverso. Atualmente, uso este contêiner para facilitar a administração, no entanto, eu poderia tentar algo diferente.
Eu sei que você está dizendo que isso só acontece comigo, e eu não tenho provas do contrário, mas isso realmente significa que não é possível para mais ninguém?
Vou investigar a configuração do nginx que o Discourse envia para ver se consigo entender onde estou fazendo algo errado. Agradeço sua visão.
Não afirmo que entenderia algo aqui e agora, mas quando comecei a usar o Discourse, eu tinha o Varnish na frente do Discourse e experimentei muitas coisas estranhas, como conteúdo incorreto.
O Discourse faz seu próprio cache e praticamente qualquer tipo de cache por um proxy reverso é uma péssima ideia que consome muito tempo. Mas, claro, minhas habilidades muito limitadas são bem diferentes do que os “Big Guys™” conseguem fazer.
Ele queria que eu removesse completamente o proxy reverso. Isso é simplesmente remover algumas coisas da configuração do proxy. Eu não sabia que o Discourse estava fazendo cache internamente que entraria em conflito com o cache externo, então essa é uma sugestão útil.
[quote=“Jakke Lehtonen, post:33, topic:328698, username:Jagster”]
Então você fará basicamente o que Falco já sugeriu algumas vezes agora
[/quote]O link que ele continua enviando spam é o que já estamos fazendo:
estas etapas funcionarão em qualquer provedor de nuvem compatível com Docker ou servidor local.
Ele está executando o contêiner padrão. A documentação menciona o uso de uma caixa “compatível com Docker”, que ele está usando. A documentação até menciona o uso de um servidor local, que ele está usando.
Não há menção de usar um proxy especial aprovado ou desabilitar o cache.
Há também documentação para configurar o SSO, que parece ter causado problemas semelhantes aos que estamos enfrentando no passado:
Ainda sem menção de configuração de cache ou soluções de proxy reverso “personalizadas”.
No mínimo, eu sugeriria atualizar a documentação para destacar esses problemas potenciais, já que eles são tão óbvios para os especialistas em Discourse.
Eu ficaria muito receoso com essa configuração de cache. Não entendo completamente a documentação do nginx para proxy_ignore_headers, mas por padrão o nginx não armazena em cache respostas que incluem um cabeçalho Set-Cookie. Parece que essa configuração está mudando esse comportamento para que respostas que incluem um cabeçalho Set-Cookiepossam ser armazenadas em cache. Se forem armazenadas em cache com o cabeçalho Set-Cookie e depois servidas a um usuário diferente, isso pode muito bem fazer com que alguém troque de conta de usuário.
Em teoria, essa configuração só deveria se aplicar a arquivos de mídia, mas corresponder ao final de uma URL (incluindo parâmetros de consulta?) parece uma maneira bastante insegura de fazer isso.
Eu interrompi seu uso. Como outros apontaram, parece uma ideia bastante ruim no geral. Agradeço a explicação. Não percebi imediatamente nada de errado com o que ela estava fazendo, mas certamente não sou um especialista no assunto.