Olá a todos,
Estou participando do desenvolvimento de uma aplicação web cujo modo de autenticação é via certificado digital.
Estamos usando o JBOSS 4.0.5 como servidor de aplicação.
Eis um trecho do meu web.xml:
…
<security-constraint>
<web-resource-collection>
<web-resource-name>SecurePages</web-resource-name>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
…
Tudo está configurado e funcionando perfeitamente.
O único problema é que quando o usuário tenta acessar uma página protegida utilizando o internet explorer e clica em cancelar na caixa de diálogo que abre automáticamente(exigindo o pin de acesso) o internet explorer exibe uma pagina de erro com a mensagem: A página não pode ser exibida. Servidor não encontrado ou erro de DNS. No simples fato de abrir a caixa de diálogo no ie, o seguinte warning é exibido, sendo exibido novamente quando se clica no botão cancelar:
WARN [Http11Processor] Exception getting SSL attributes
java.net.SocketException: Socket Closed
at java.net.PlainSocketImpl.setOption(PlainSocketImpl.java:201)
at java.net.Socket.setSoTimeout(Socket.java:979)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.setSoTimeout(SSLSocketImpl.java:1928)
at org.apache.tomcat.util.net.jsse.JSSE14Support.synchronousHandshake(JSSE14Support.java:98)
at org.apache.tomcat.util.net.jsse.JSSE14Support.handShake(JSSE14Support.java:66)
at org.apache.tomcat.util.net.jsse.JSSESupport.getPeerCertificateChain(JSSESupport.java:120)
at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:1126)
No firefox tal problema não acontece.
Em algumas pesquisas que eu fiz na net algumas pessoas disseram que se tratava de um problema com o IE.
Bem, eu gostaria que houvesse pelo menos alguma maneira de redirecionar o usuário para uma pagina amigável caso ele clicasse no botão cancelar da caixa de diálogo no internet explorer.
Espero ter sido claro quanto ao problema.
Qualquer ajuda ou idéia para contornar esse problema será bem vinda.