2016-04-18 25 views
1

我正在使用Apache Ignite来群集Web会话,并使用Spring安全性来执行基于表单的身份验证。我使用的软件有:Apache Ignite似乎会导致会话固定

  • JDK 1.8.0_60
  • 的Apache Tomcat 7.0.68
  • 阿帕奇点燃1.5.0.final
  • 春季安全3.1.3.RELEASE

(没有Apache Ignite,基于表单的身份验证可以正常工作,并且JSESSIONID cookie会在验证成功后进行更改,以防止会话修复攻击,如预期的那样)。

与Apache点燃,我不能登录,我得到以下警告:

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不经认证的成功而改变。)

+0

你可以尝试每晚构建并检查问题是否在那里复制?自1.5起,Ignite有几个相关的修复程序。构建可以在这里下载:https://builds.apache.org/view/HL/view/Ignite/job/Ignite-nightly/lastSuccessfulBuild/ –

回答

1

正如Valentin所建议的(谢谢),我尝试了来自Apache Ignite 1.6.0-SNAPSHOT#20160419-sha1:186c8604的the nightly build。事实上,它的工作。

它与下面的春季安全配置:

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

当然JSESSIONID cookie不基于Spring Security认证的成功变革和

然后我注释掉以下配置:

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

它也适用。并且在认证成功后,JSESSIONID cookie会按照它应该做的那样进行更改。

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

0

的Tomcat 7已经内置了会话固定功能,

  • 身份验证更改JSESSIONID,以防止会话固定攻击一共

Tomcat不让应用程序更改会话ID。

+0

但正如问题中所提到的,没有Apache Ignite,基于表单的身份验证工作很好,JSESSIONID cookie会在认证成功后被更改,以防止会话修复攻击。在这种情况下,Tomcat(版本7.0.68)确实允许应用程序更改会话ID。 – Yuci