我在grails中爲用戶和角色管理使用spring-security。 因爲,過去幾天我面臨一個奇怪的問題:當一個用戶登錄某個時候,用戶變成另一個用戶(會話混淆)。登錄用戶會話在tomcat上混淆了grails spring security
示例:用戶A登錄系統,用戶B通過控制器操作在某個隨機點登錄系統時,用戶A在用戶A系統中成爲用戶B,與用戶B相同。
這個問題是在生產而不是開發。
我發現了一些在互聯網上的類似案件,但都不是grails。 Spring Security/JSF/Hibernate Accidental Session Hijacking on Tomcat?,這個類似的,但在jsf和解決方案提到似乎並不適用於我。另一個是Session mix up - apache httpd with mod_jk, tomcat, spring security - serving data of other user但這裏的問題似乎是因爲mod_jk,這不是我的情況(我沒有使用mod_jk)。
我的系統版本:
- Grails的版本:3.2.4
- Groovy的版本:2.4.7
- JVM版本:1.8.0_05
- Server版本:的Apache Tomcat/8.5.14
- JVM版本:1.8.0_121-8u121-b13-0ubuntu1.16.04.2-B13
關鍵在於ISP。在他們的基礎設施內部,網絡代理或其他東西。 –
但是,ISP真的會影響春季安全跟蹤的用戶會話嗎?因爲我沒有關於頁面重定向的問題,或者我認爲由spring security和tomcat維護的會話。 – Jumper
聽起來好像用來關聯瀏覽器和會話的cookie值(會話ID)在到達服務器之前,在通過ISP的請求期間在某處發生了交換/更改。您是否嘗試過使用HTTPS並保護Cookie?也許這樣做可以防止這種情況發生。 –