4

在我们的 vaadin Web 应用程序中,当 LTPA 令牌过期时,我们会收到 UnauthorizedSessionRequestException。之后应用程序不再响应。即使会话未处于非活动状态并且用户执行了某些操作,LTPA 令牌也会过期。我们的生产服务器上的 LTPA 令牌超时设置为 120 分钟。但我也可以在我的本地机器上测试它,并在我的 Web Sphere Liberty Profile 中设置 1 分钟的超时时间来理解问题。

这是德语异常的堆栈跟踪:

[ERROR   ] SESN0008E: Ein als anonymous authentifizierter Benutzer hat versucht, auf eine Sitzung zuzugreifen, deren Eigner user:BasicRegistry/ksc ist.
[ERROR   ] SRVE0777E: Es wurde eine Ausnahme von der Anwendungsklasse 'com.vaadin.server.VaadinServlet.service:240' ausgelöst.
javax.servlet.ServletException: com.vaadin.server.ServiceException: com.ibm.websphere.servlet.session.UnauthorizedSessionRequestException: SESN0008E: Ein als anonymous authentifizierter Benutzer hat versucht, auf eine Sitzung zuzugreifen, deren Eigner user:BasicRegistry/ksc ist.
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:240)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240)
    at [internal classes]

用英语讲

A user authenticated as anonymous has attempted to access a session owned by user
4

2 回答 2

3

LTPA 令牌的工作方式与会话完全不同。

创建 LTPA 令牌后,它将在一定时间内有效,设置为 LTPA 令牌超时(在您的情况下为 120 分钟)。虽然每次向服务器发出请求时会话超时都会延长,但 LTPA 令牌超时不会。即使向服务器发出后续请求,令牌也会保持其原始超时时间。

还有另一个设置控制何时应该扩展 LTPA 令牌。此设置称为 cacheCushionMax,其默认值为三分钟。这意味着只有在剩余时间少于该值的情况下,LTPA 令牌才会在请求时刷新。如果在 LTPA 令牌到期之前还有超过三分钟的时间,它将保持其旧的超时时间。

要更改此值:

  1. 导航到 Java 虚拟机的自定义属性部分(必须为集群中的每个服务器重复)
  2. 使用您想要的值(以分钟为单位)创建(或编辑如果存在)名为 com.ibm.ws.security.cacheCushionMax 的属性。cacheCushionMax 值不能大于 LTPA 超时值的 1/5。

我找到的关于这方面的最佳资源是在IBM 支持页面上。它很旧但仍然有效。我所写的内容也在更详细的场景中进行了解释,尤其是在“可能的最小有效到期时间”部分下

于 2014-05-08T10:01:39.807 回答
0

看起来好像 URI 在 WebSphere 中不受保护。WebSphere 默认值发生了一些变化。我希望配置告诉 WebSphere 在 LTPAToken 可用时立即建立安全上下文,即使在不受保护的 URL 上也是如此。在这种情况下,未受保护的 URL 将获得安全上下文,就好像它们将使用 Web.xml 中定义的 security_constraint 一样。如果现在 LTPA 令牌无效并且 HTTPSession 仍然有效(请记住 HTTPSession 是基于活动的,而 LTPA 令牌是固定时间的)WebSphere 现在确实在访问 Session 时看到了违规。添加此功能是为了防止会话劫持攻击。您可以禁用此功能,并且 HTTP 容器上有一些自定义属性。不建议关掉

于 2015-04-08T14:54:35.157 回答