2016-04-18 39 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