我在我的一个web应用程序中有以下情况。用户通常使用的浏览器是Chrome。
我使用用户将加密卡插入到读卡器中的数字证书。
要登录到应用程序,用户基本上可以访问使证书数据读取的https链接。
到目前为止一切都很好。
如果要结束应用程序会话的用户关闭浏览器,则没有问题。一切都结束了。
但是,如果用户想离开他的应用程序会话,而不关闭所有浏览器窗口,下面是我的问题。
有一个按钮关闭应用程序的会话,用户离开并重定向到初始登录屏幕。似乎一切都被重置了,因为用户已经离开了。但是,当新用户想要登录并按下链接读取证书数据时,不要对新卡进行新的读取,而是使用上一张卡中的数据,而不只是要求别针访问它。
这个问题更进一步,例如,如果用户忘记了卡、卡并试图登录,则无法读取证书。但是现在,尽管插入正确,但在重新启动浏览器之前,将不会再次读取该卡,该浏览器维护一个没有证书的缓存。
目前只有关闭所有Chrome窗口才能找到解决方案,但这取决于用户是否这样做。
一个部分解决方案肯定会用javascript ()关闭浏览器,但是有一段时间,它不能用javascript (window.close ())关闭,这是一个不能从站点本身打开的窗口,我认为它被排除在外。
有人能为我做贡献吗?谢谢
发布于 2017-11-17 15:58:48
Chrome和其他浏览器维护所执行的SSL身份验证的缓存,并决定何时提示用户选择证书。由于TLS恢复协议,没有“注销”功能,也不能从服务器端关闭连接(客户端可以恢复会话)
在使用客户端证书定义身份验证系统时,这是一个常见的已知问题。我只找到了一个解决办法:使用不同的域强制浏览器选择证书。
login.domain.com
-->login1.domain.com
-->login2.domain.com
-->loginN.domain.com您有一个虚拟身份验证URL login.domain.com,它在每次需要身份验证时都将用户的浏览器重定向到随机的loginN.domain.com。Chrome将检测到它是一个不同的域,并提示用户选择证书。
您还可以考虑使用不同的端口而不是不同的DNS,但是用户的防火墙可能会出现问题,因为您没有使用标准端口,而且在这种情况下Firefox也不会显示窗口。
https://stackoverflow.com/questions/47353913
复制相似问题