我正在servlet过滤器中实现cert身份验证。我使用httpRequest.getAttribute("javax.servlet.request.X509Certificate")
API获取客户端证书。当用户首次启动浏览器并访问Web服务器时,基础SSL会请求客户端证书,浏览器会提示您选择证书。但是,在用户注销并且我使HTTP会话无效后,如果用户未关闭浏览器并返回到Web服务器,则基础SSL不会触发浏览器再次提示选择证书。我认为这是因为在用户从HTTP层的Web服务器注销后,SSL会话没有被拆除。我的问题是,是否有办法使servlet中的底层SSL会话无效?一个更一般的问题,如何在用户从Web服务器注销后让浏览器重新提示选择证书?
谢谢, 刚
答案 0 :(得分:0)
我的问题是,有没有办法让servlet中的底层SSL会话失效?
您必须编写Tomcat Valve并且可能也会更改一些Tomcat源代码。我已经在Tomcat HTTPS /身份验证源代码中深入了解了几层,我还没有看到一个可以为您提供SSLSession的钩子。
更一般的问题是,在用户从Web服务器注销后,如何让浏览器重新提示选择证书?
如果可以执行此操作,SSL会话无效,可能会也可能不会产生这种影响。我认为这将是特定于浏览器的。