O Previne é uma aplicação voltada para empresas que fazem uso de regimes especiais da receita federal e tipicamente é acessada tanto pela empresa que a contrata quanto por fiscais da receita federal. A demanda era fazer com que o Previne suportasse a autenticação atual (FORM) no uso interno da empresa e via e-cpf para uso externo pelos fiscais da receita.
Fiz o trabalho de pesquisa tradicional e achei o excelente material Controle de Acesso com Certificação Digital usando JCE e JSSE desenvolvido por Ricardo Koji Ushizaki. Depois de construir o servlet de teste conforme indica a apresentação, me deparei com o fato de um mesmo web.xml não suportar duas marcações auth-method
Finalmente optei pela seguinte solução: criei uma segunda aplicação autenticada via e-cpf que consiste somente de um servlet que redireciona para a aplicação destino e usei o recurso de single sign on do Tomcat. Dessa forma o usuário é autenticado na primeira aplicação e redirecionado para a segunda sem ter que passar por uma nova autenticação.
A grande vantagem que vi nessa solução foi que a aplicação original não sofreu nenhum tipo de manutenção e a aplicação que faz a autenticação ficou genérica, recebendo como parâmetro de contexto o caminho destino do redirecionamento de modo que pode ser usada com outras aplicações sem nenhuma alteração.
4 comentários:
Walter, Estou precisando fazer a mesma autenticacao que voce fez para o pessoal da receita. Poderias estar passando mais detalhes? O que é checado no cartao, gravo alguma coisa?
Obrigado..
Jr
hunter@4u.com.br
Oi Jr. Usando o Tomcat vc "nem vê" o cartão. As informações chegam direto para o realm através da classe java.security.cert.X509Certificate
Sds,
Walter
Boa noite,
Como faço para pedir o certificado do cliente somente quando o mesmo clicar no login via certificado digital?, pois uma vez configurado o tomcat para clientAuth o certificado será solicitado ao acessar o sistema.
Oi Michel.
Boa pergunta... uma forma que me vem à cabeça rapidamente é usando 2 IPs, aí vc pode configurar um com clientAuth="false" e o outro com clientAuth="true".
Postar um comentário