通过键盘/鼠标事件重置Websphere中的会话超时



我已经将WebSphere中的会话超时设置为3分钟(Consider.Actual timeout我已经设置为30分钟)。我已经打开了我的应用程序,只需将鼠标移动到J2EE应用程序上,并按下一些不会提交任何页面的键。即使在3分钟后,应用程序的会话仍会保留。我需要确认当鼠标移动/按键时,会话是如何保留的?没有向服务器发送请求,或者没有提交页面。

我的应用程序的会话超时仅在服务器中维护。

谢谢。

这听起来像是由于WebSphere使用LTPA令牌进行身份验证。总结:

  • 当web会话过期时,用户凭据未过期(您不强制重新登录)。这是由于WebSphereLTPA令牌的实现以及有关此方面的更多信息在IBM文档
  • 当LTPA令牌过期时,用户凭据已过期(您将被迫重新登录)
  • web会话超时为相对于用户活动。也就是说,当用户活动时,它重置为0被检测到
  • LTPA令牌超时与用户活动无关。它将在创建日期后超时正在进行的用户活动

来源http://www-01.ibm.com/support/docview.wss?uid=swg21078845:

问题3

我想强制我的用户在设置的"非活动超时"时间后重新登录。WebSphereApplicationServer应该如何处理会话超时和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令牌根据登录会话的生存期而不是不活动状态过期。因此,如果用户在一段时间内不执行任何操作,那么WebSphereApplicationServer登录会话将不会过期。但是,HTTPSession确实会因不活动而过期。如果在您的应用程序中,您需要基于空闲来终止应用程序的使用,则必须在应用程序中显式地对此进行编码。您可以捕获用户何时带着过期会话(实际上是新会话)到达,并在您认为有必要时强制他们再次登录。请记住,这样做会破坏跨应用程序的单一登录。

与第一种方法略有不同的第二种方法是使用HTTPSession.getLastAccessTime()来计算最后一个客户端请求发生的时间。如果时间太晚了,您当然可以使访问失败并强制进行新的身份验证。通过使用servlet过滤器,这两种方法中的任何一种都可以对应用程序代码透明。

需要注意的是,IBM Tivoli®Access Manager提供了基于生命周期和空闲的身份验证会话超时。

用户经常会问为什么WebSphereApplicationServer以这种方式工作。为什么它不能使空闲登录会话超时?原因是WebSphereApplicationServer从根本上说是一个松散耦合的分布式系统。参与SSO域的应用程序服务器不需要相互通信。他们甚至不必在同一个牢房里。因此,如果您想限制LTPA令牌(也称为SSO令牌)的空闲寿命,您必须在每个请求上(或者在一分钟间隔内看到的第一个请求上)更新令牌本身的最后使用时间。这意味着令牌本身会频繁更改(意味着浏览器会频繁接受新的cookie),并且当看到入站令牌进行验证时,WebSphereApplicationServer必须对其进行解密和验证。这可能会很昂贵(如今,WebSphereApplicationServer只在每个应用服务器上首次使用时验证令牌)。通过巧妙的缓存等方式来解决这些问题并非不可能,但WebSphereApplicationServer现在并不是这样工作的。

最新更新