【问题标题】:session disconnect the client after smart card is removed移除智能卡后会话断开客户端
【发布时间】:2012-09-13 16:04:23
【问题描述】:

我在 apache、tomcat 和 IIS 7.5 上使用 cac 智能卡实现了强大的身份验证,但问题是当客户端从读卡器中移除智能卡时,他仍然可以完全访问服务器。 那么如何在智能卡被移除后创建身份验证器管理器或会话断开客户端。

会话可以处于以下两种状态之一:已连接或已断开:

已连接:每一个连接状态的会话都会显示在客户端。当用户移除智能卡或显式将客户端切换到不同的会话时,会话会自动断开。

断开连接:这些会话仍在服务器上执行,但未连接到客户端,因此不会显示。但是,用户可以重新连接到断开的会话,例如通过将包含适当令牌的智能卡插入客户端的读卡器中。这会将会话的状态更改为已连接并使其显示在该客户端上。

【问题讨论】:

  • 您的问题是,当用户将 cac 卡插回机器并访问网站时,如何将用户重新连接到断开的会话?
  • 是的,这是问题的一部分,但更重要的部分是当用户移除智能卡时会话如何自动断开

标签: java ssl session-state smartcard


【解决方案1】:

我认为之前有人问过类似的问题,但我找不到链接(可能类似于“单击注销时刷新 ssl 会话”)。这里的关键是 SSL(重新)协商和 SSL 会话缓存。

您有两个选择:要么减少服务器的 SSL 会话缓存(减慢连接速度),因此在移除卡时尽快强制重新协商失败(Apache mod_ssl 中的默认会话缓存超时为 IIRC 300 秒)或者实现一个浏览器插件(除非你有一个专用的客户端软件)来检测卡的移除,从而使客户端的会话无效(或者甚至可能向服务器发送信号以刷新服务器端的会话)。

如果您谈论的是 Web 服务,那么您永远无法使用标准工具“完全控制”...

【讨论】:

  • 感谢您的帮助,您能否更明确地说明如何向服务器发送信号以刷新服务器端的会话
  • 另一种选择是添加一些 javascript 来轮询网络服务器以继续请求一些微小的文本/html(类似于 ping,网络应用程序会返回一些微小的 sn-p 文本)。当请求因 CAC 卡已被移除而失败时,客户端知道它已断开连接。在服务器端,如果您跟踪每个会话的 ping,并且您停止接收它们,您就知道会话已断开连接。这不是最优雅的解决方案,但它可能很容易实现。
  • 我搜索了 java comet 解决方案来轮询数据到服务器并在 cac 卡被移除并且没有找到我的方式时断开连接。你能把你的实现的代码源发给我吗?
猜你喜欢
  • 2013-05-31
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 2014-05-06
相关资源
最近更新 更多