我在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?也许这样做可以防止这种情况发生。 –