【问题标题】:Tomcat is not changing session id anymoreTomcat 不再更改会话 ID
【发布时间】:2014-06-16 23:27:57
【问题描述】:

我有一个 tomcat 8 服务器,其中有两个 Web 应用程序。我想通过对用户进行身份验证来授予对这两个应用程序的访问权限。

我通过在 catalina/conf/context.xml 中设置 sessionCookiePath="/" 来做到这一点:

<Context useHttpOnly="false" sessionCookiePath="/">

现在我面临的问题是 tomcat 不再更改会话 ID。我收到一条警告消息。

Warn org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy - your servlet container did not change the session id when a new session was created

在链接上,据说tomcat默认会处理这个问题。 http://www.tomcatexpert.com/blog/2011/04/25/session-fixation-protection

我该如何解决?

谢谢

【问题讨论】:

    标签: spring security tomcat session-cookies


    【解决方案1】:

    是的,这是预期的行为。文档提示了这一点,但是 没有明确说明。

    设置sessionCookiePath="/" 被视为特殊情况以支持 portlet 实现。一旦一个 Web 应用程序获得一个会话 任何 Web 应用程序的后续会话也配置为 sessionCookiePath="/" 将始终获得相同的会话 ID。这成立 即使会话无效并创建了一个新会话。

    如果一组 web 应用程序在这种模式下运行,则更改会话 身份证更难。你必须编写一个自定义的 Tomcat 组件来做 它适合你,即使那样我也不确定你能保证顺利 换一个。

    【讨论】:

    • 感谢 Pheonix 的回复。您是否建议我忽略警告信息?
    • @I.YOCK 会话固定类和 sessionCookiePath="/" 设置彼此不兼容。所以基本上会话固定部分在该设置后不起作用。如果在登录/注销后使会话 ID 无效很重要,则需要为其制作一个 tomcat 组件。如果会话固定不是您的首要任务,那么您可以忽略此警告。
    • 非常感谢!!这对我有帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 2011-01-19
    • 2012-08-03
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 2016-09-30
    • 2013-08-03
    相关资源
    最近更新 更多