Olá,
estamos trabalhando em um mecanismo em nossa aplicação web que altera as permissões do usuário no caso deste estar acessando-a fora de nossa rede local.
Muito simples: se está em nossa rede local, liberamos alguns recursos para o mesmo, caso contrário, bloqueamos os mesmos.
Descobrir se o usuário está dentro ou fora de nossa rede é fácil também. Basta dar uma olhada no IP do usuário que está fazendo a requisição do sistema, certo? Errado.
Vejam a situação que estamos enfrentando (não sou especialista em redes, sendo assim provavelmente a solução para o problema é ridícula):
se o usuário acessa o nosso sistema (via browser) utilizando o IP do servidor aonde ele está alocado (http://1.2.3.5/Sistema ou qualquer outro IP), quando obtemos o IP do usuário através da função getRemoteAddr() de HttpServletRequest, obtemos o IP do usuário no formato IPv4.
Se o usuário acessa o sistema utilizando o nome definido pelo DNS (http://nossaempresa.com/NossoSistema por exemplo), obtemos o IP do usuário no formato IPv6.
Alguém saberia me dizer alguma possível causa para esta mudança? Não deveria ser no mesmo formato o IP recebido?
Aproveitando, alguém sabe se há como converter o endereço IPv6 para o formato IPv4? Se for possível, como fazê-lo? Alguém conhece alguma biblioteca pronta que possa ser utilizada nestes casos?