java - 移除智能卡后 session 断开客户端

标签 java ssl session-state smartcard

我在 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/

相关文章:

java - 在Java中提取部分路径

java.lang.NoClassDefFoundError : org/htmlparser/util/ParserException

java - 如何根据某些变量更改 RGB 值? (值映射颜色)

SSL 多服务器

java - Portlet、HttpSession 和线程安全

java - SQLite 一对多关系设置/获取外键

amazon-web-services - 限制从 API 网关访问 Elastic Beanstalk(客户端证书)

java - 如何在 Java 中使用 SOAP 实现基于 HTTPS 的 Web 服务

python - 模块未找到错误 : No module named 'SessionState

iphone - session 管理和一次性用户登录 - iphone