我在使用tomcat的java web应用程序中遇到智能卡身份验证问题。问题似乎与Internet Explorer(我们的组织使用版本8)以及它如何在Windows中读取个人证书存储区有关。
目前我有一些javascript代码一直刷新页面,直到IE读取客户端证书,这确实发生在1-30刷新之间,虽然它是一个丑陋的解决方案,但用户可以接受少量刷新但是很高的数字不是。看起来好像IE不直接从Windows证书库读取证书,而是在特定的时间间隔内将它们缓存在自己的商店中(刷新量取决于相对于间隔发生登录的时间),因为如果我转到IE选项并且到“内容”选项卡并查看我的个人商店我可以在插入卡后立即看到证书(即使IE无法找到它们用于服务器请求)。
如果我在同一选项卡中按“清除SSL状态”按钮,则IE立即可以读取客户端证书并将其传递给服务器。有一个javascript命令:
document.execCommand('ClearAuthenticationCache');
这应该做同样的事情,但它只是清空缓存,它不会使IE在调用时能够读取客户端证书。
如果我们无法正常工作,唯一的解决方案似乎是要求用户插入卡并重新启动整个浏览器。完成此操作后,客户端证书将始终传递到服务器。
有人认识到这个问题吗?