我在 apache、tomcat 和 IIS 7.5 上使用 cac 智能卡实现了强身份验证,但问题是当客户端从读卡器中取出智能卡时,他仍然可以完全访问服务器。 那么如何在移除智能卡后创建身份 validator 管理器或 session 断开客户端。
session 可以处于两种状态之一,已连接或已断开连接:
已连接:每个处于连接状态的 session 都会显示在客户端上。当用户移除智能卡或明确将客户端切换到不同的 session 时, session 会自动断开。
断开连接:这些 session 仍在服务器上执行,但未连接到客户端,因此不会显示。但是,用户可以重新连接到断开连接的 session ,例如,通过将包含适当 token 的智能卡插入客户端的读卡器中。这会将 session 的状态更改为已连接,并使其显示在该客户端上。
最佳答案
我认为之前有人问过类似的问题,但我找不到链接(可能类似于“单击注销时刷新 ssl session ”)。这里的关键是 SSL(重新)协商和 SSL session 缓存。
您有两个选择:要么减少服务器的 SSL session 缓存(减慢连接速度),然后在移除卡时强制重新协商失败(Apache mod_ssl 中的默认 session 缓存超时为 IIRC 300 秒)或者实现一个浏览器插件(除非你有一个专用的客户端软件)来检测卡的移除,从而使客户端的 session 无效(或者甚至可能向服务器发送一个信号以刷新服务器端的 session )。
如果您谈论的是 Web 服务,您永远无法使用标准工具“完全控制”...
关于java - 移除智能卡后 session 断开客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12393711/