spring-secuity dando conflito em uma rede corporativa
14/07/2017 11:16
0
Pessoal, Estou com um problema que nunca tinha visto antes.A partir do momento que um usuário (A) se autentica no sistema, se alguma outra pessoa, estando nessa mesma rede**, acessar o site, ela automaticamente "assume" que já está autenticada com a conta da primeira pessoa que se autenticou. Se ela força uma autenticação, a primeira pessoa que se autenticou passa assumir a senha do usuário 2.** Esse problema só acontece em uma rede corporativa específica. Não acontece quando eu conecto múltiplas pessoas no mesmo roteador, no mesmo computador (em navegadores diferentes), nem em outras redes corporativas. Eu sequer consegui simular o problema que acontece lá quando acesso dessa rede doida.Eu SUSPEITO, que seja alguma coisa que a rede (proxy?) faça para otimizar o tráfego ou algo do tipo, fazendo um cache e compromentendo as sessões... sei lá.. Mas do meu lado também tem problema porque o servidor onde hospedo a aplicação não está conseguindo gerenciar isso.Vocês já presenciaram esse problema? Alguma sugestão de como eu poderia mudar alguma configuração do spring-security ou do container pra não ter esse problema? Eu não posso simplesmente falar que o problema é da rede deles - mesmo isso só acontecendo lá - e isso é bem estranho.Estou usando Grails 3, spring-security 3.1, Tomcat 8 e testando também spring-boot-starter-tomcat (gerando direto um jar executavel com o o 'grails package')Obrigado!!!!
Tags: Grails, spring-security-core, security, problema, sessão


0
[Kiko habilita edição de post, rsrs.... a formatação ficou toda tosca! Abraço!]
14/07/2017 11:17


0
oi Rafael,
já vi algo similar ocorrer, mas não foi com o Spring Security. Vou te contar a história por que talvez ela possa te ajudar.
Em um sistema de vendas online, havia um mecanismo de atendentes em tempo real. Começaram a ocorrer situações do tipo: Dona Joana compra uma Bíblia enquanto Seu Juca compra os vídeos mais brutos da Pornolândia.
Dona Joana recebia Pornolândia e seu Juca também.
Ou Seu Juca recebia A Bíblia enquanto Dona Joana também.

O que estava ocorrendo era que o programador não conhecia sessões e havia declarado atributos estáticos nos controladores da aplicação. Sendo assim, num acesso simultâneo este tipo de coisa ocorria.
No caso de um mecanismo de autenticação, isto pode estar ocorrendo também. Verifique se não há beans ou serviços na sua aplicação com escopo singleton e que possuam estado. Se eles possuírem estado, então este será compartilhado por todos os usuários do sistema no caso de uma aplicação concorrente.

Exemplo: um serviço que retorna o usuário logado. Você vai pegar o código fonte, e nele tem um atributo chamdao usuário e o escopo é singleton. Enquanto um usuário se autentica, tudo bem. Chegou o segundo, é substituído o valor, e por aí vai.
Eu verificaria isto primeiro. Na sequência, verificaria também se há no seu sistema um authentication provider customizado, talvez o erro esteja por aí.

Qualquer coisa, to aqui pra ajudar!


0
Rafael, passei por algo semelhante. Tenho uma aplicação que é utilizado por diversos clientes, mas é a mesma aplicação(multi empresas), então um determinado dia me deparei com um cliente reclamando de um comportamento similar ao teu. Por ser uma única aplicação e os demais clientes não reclamarem ou não detectarem tal comportamento, fiquei muito incrédulo. Tive que fazer a viagem ir visitar o cliente, vi com meus próprios olhos o que estava acontecendo, olhava o log do servidor e nada de erro, excpetion..nada, com  muito custo descobri o que estava acontecendo. Eles tinham um proxy na rede e não sei exatamente que tipo de configuração faziam lá, mas o proxy armazenava a sessão e fazia essa confusão. Se sua infra possuir um proxy, tenta tirar umas duas máquinas e passar por fora do proxy, é um teste simples de ser feito.

Espero ter ajudado.

té +
01/08/2017 14:17


0
Eduardo,
O "problema" está realmente relacionado ao proxy, mas eu achei que pudesse colocar algum header que forçasse/informasse o proxy para nunca fazer cache de conteúdo.
07/08/2017 09:27


1
Rafael, no meu caso eu coloquei no header das páginas as instruções abaixo e resolveu.

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

Uma outra alternativa se for possível é navegação privada.
08/08/2017 13:57


0
Valeu, Eduardo!
Acho que era isso que eu precisava!
Vou incluir essas tags e visitar a empresa que tinha problema para fazer alguns testes!
Mas desde já agradeço a atenção! 
Abraço!
08/08/2017 16:51



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto