Session ApacheIgnite似乎会导致会话固定

Session ApacheIgnite似乎会导致会话固定,session,spring-security,ignite,Session,Spring Security,Ignite,我使用ApacheIgnite对web会话进行集群,并使用SpringSecurity进行基于表单的身份验证。我使用的软件有: JDK 1.8.0_60 ApacheTomcat 7.0.68 Apache Ignite 1.5.0.final 弹簧安全3.1.3.1释放 (没有ApacheIgnite,基于表单的身份验证工作正常,身份验证成功后,JSESSIONID cookie会发生更改,以防止会话固定攻击,如预期的那样。) 使用Apache Ignite,我无法登录,并收到以下警告:

我使用ApacheIgnite对web会话进行集群,并使用SpringSecurity进行基于表单的身份验证。我使用的软件有:

  • JDK 1.8.0_60
  • ApacheTomcat 7.0.68
  • Apache Ignite 1.5.0.final
  • 弹簧安全3.1.3.1释放
(没有ApacheIgnite,基于表单的身份验证工作正常,身份验证成功后,JSESSIONID cookie会发生更改,以防止会话固定攻击,如预期的那样。)

使用Apache Ignite,我无法登录,并收到以下警告:

2016-04-18 16:49:07,283 WARN  org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy/onAuthentication 102 - Your servlet container did not change the session ID when a new session was created. You will not be adequately protected against session-fixation attacks
如果我在Spring配置中关闭会话固定保护,如下所示:

<http>
    ...
    <session-management session-fixation-protection="none" />
    ...
</http>

...
...

它起作用了。(因此,JSESSIONID cookie在身份验证成功后不会更改。)

Tomcat 7具有内置的会话固定功能

  • 在身份验证时更改jsessionid以完全防止会话固定攻击
Tomcat不允许应用程序更改会话ID。

根据Valentin(,谢谢)的建议,我在Apache Ignite上尝试了版本1.6.0-SNAPSHOT#20160419-sha1:186c8604。事实上,它是有效的

它使用以下Spring安全配置:

<http>
    ...
    <session-management session-fixation-protection="none" />
    ...
</http>
<session-management session-fixation-protection="none" />

...
...
当然,在Spring安全认证成功后,JSESSIONID cookie不会改变

然后,我对以下配置进行注释:

<http>
    ...
    <session-management session-fixation-protection="none" />
    ...
</http>
<session-management session-fixation-protection="none" />

它也起作用。身份验证成功后,JSESSIONID cookie将按预期进行更改


好的,我现在将使用Ignite版本1.5.0.final(没有会话固定保护),并等待版本1.6.x的发布。

您能否尝试夜间构建并检查问题是否在那里重现?自1.5版以来,Ignite进行了多个相关修复。构建可以在这里下载:但如问题中所述,如果没有ApacheIgnite,基于表单的身份验证工作正常,并且在身份验证成功后JSESSIONID cookie会发生更改,以防止会话固定攻击。在这种情况下,Tomcat(版本7.0.68)确实允许应用程序更改会话ID。