1

我的 Web 应用程序中有以下案例。用户使用的常用浏览器是 Chrome。

我使用用户拥有插入读卡器的加密卡的数字证书。

要登录应用程序,基本上用户访问读取证书数据的 https 链接。

到目前为止一切正常。

如果用户结束他的应用程序会话关闭浏览器,则没有问题。一切都结束了。

但是,如果用户想离开他的应用程序会话,而不关闭所有浏览器窗口,这就是我的问题。

有一个按钮可以关闭应用程序的会话,用户离开并重定向到初始登录屏幕。似乎一切都已重置,因为用户已经离开。但是当新用户想要登录并按下链接读取证书数据时,不是重新读取新卡,而是使用前一张卡中的数据,而不仅仅是要求密码来访问它。

问题更进一步,例如,如果用户忘记了卡,卡并尝试登录,则无法读取证书。但是现在,虽然插入正确,但在重新启动浏览器之前不会再次读取该卡,这维护了一个没有证书的缓存。

目前只有关闭所有 Chrome 窗口才能找到解决方案,但这取决于用户是否这样做。

部分解决方案肯定会用 javascript() 关闭浏览器,但有一段时间,它不能用 javascript (window.close()) 关闭,这是一个无法从站点本身打开的窗口,可用的我认为已经排除

有人可以为我做出贡献吗?谢谢

4

1 回答 1

1

Chrome 和其他浏览器会保留执行的 SSL 身份验证的缓存,并决定何时提示用户选择证书。由于 TLS 恢复协议,没有“注销”功能,也不能从服务器端关闭连接(客户端可以恢复会话)

在使用客户端证书定义身份验证系统时,这是一个常见且已知的问题。我只找到了一种解决方法:使用不同的域来强制浏览器选择证书

login.domain.com
   -->login1.domain.com
   -->login2.domain.com

   -->loginN.domain.com

您有一个虚拟身份验证 URL ,每次您需要身份验证时,它都会login.domain.com将用户的浏览器随机重定向。loginN.domain.comChrome 会检测到它是一个不同的域,并会提示用户选择证书

您也可以考虑使用不同的端口而不是不同的 DNS,但是您可能会遇到用户的防火墙问题,因为您没有使用标准端口,在这种情况下,Firefox 也不会显示该窗口。

于 2017-11-17T15:58:48.267 回答