这听起来像是因为 WebSphere 使用 LTPA 令牌进行身份验证。总结:
- 当 Web 会话过期时,用户凭据未过期(您
不会强制重新登录)。这是由于 WebSphere
LTPA 令牌的实现以及有关此的更多信息包含在
IBM 文档。
- 当 LTPA 令牌过期时,用户凭证
已过期(您必须重新登录)。
- Web 会话超时为
相对于用户活动。也就是说,当用户活动时它重置为0
被检测到。
- LTPA 令牌超时与用户活动无关。它
将在创建日期后的时间后超时
正在发生什么用户活动。
来自http://www-01.ibm.com/support/docview.wss?uid=swg21078845:
问题 3
我想强制我的用户在设置的“不活动超时”时间段后重新登录。 WebSphere Application Server 在会话超时和 LTPA 超时方面应该如何工作。
答案 3
在以下 developerworks 文章的第 9 项中查看此问题的答案:
http://www.ibm.com/developerworks/websphere/techjournal/1003_botzum/1003_botzum.html
从那个链接你学到:
9- 我想强制我的用户在设置的“不活动超时”时间段后再次登录。 WebSphere Application Server 应该如何处理会话超时和 LTPA 超时?
WebSphere Application Server LTPA 令牌根据登录会话的生命周期而不是不活动来过期。因此,如果用户在一段时间内不执行任何操作,WebSphere Application Server 登录会话将不会过期。但是,HTTPSession 确实会因不活动而过期。如果在您的应用程序中,您需要基于空闲状态使应用程序的使用到期,您必须在您的应用程序中显式地对此进行编码。您可以捕获用户何时以过期会话(实际上是一个新会话)到达,并在您认为有必要时强制他们再次登录。请记住,这样做会破坏跨应用程序的单点登录。
第二种方法与第一种方法略有不同,它是使用 HTTPSession.getLastAccessTime() 来计算最后一次客户端请求发生的时间。如果时间过去太久,您当然可以使访问失败并强制进行新的身份验证。
通过使用 servlet 过滤器,这些方法中的任何一种都可以对应用程序代码透明。
应该注意的是,IBM Tivoli® Access Manager 提供了基于生命周期和基于空闲的身份验证会话超时。
用户经常问为什么 WebSphere Application Server 以这种方式工作。为什么它不能超时空闲登录会话?原因是因为 WebSphere Application Server 从根本上说是一个松散耦合的分布式系统。参与 SSO 域的应用程序服务器不需要相互通信。他们甚至不必在同一个牢房里。因此,如果您想限制 LTPA 令牌(又名 SSO 令牌)的空闲寿命,您必须使用每个请求的最后使用时间(或者可能在一分钟间隔内看到的第一个请求)更新令牌本身)。这意味着令牌本身会经常更改(意味着浏览器会频繁地接受新的 cookie),并且 WebSphere Application Server 必须在看到验证入站令牌时对其进行解密和验证。这可能会很昂贵(今天的 WebSphere Application Server 仅在每个应用程序服务器首次使用时验证令牌)。通过巧妙的缓存等方法解决这些问题并非不可能,但这不是 WebSphere Application Server 今天的工作方式。