spring-security - Spring RememberMe 进程AutoLoginCookie

标签 spring-security remember-me

我正在使用 Spring Security 3.0.0 和持久的 RememberMe。当服务器重新启动时出现 浏览器窗口仍然打开 ,我们需要能够继续使用该应用程序而无需登录 - 如果选择了记住我。

我收到 org.springframework.security.web.authentication.rememberme.CookieTheftException: Invalid remember-me token (Series/token) mismatch。暗示先前的 cookie 盗窃攻击,当我尝试在服务器重新启动后继续使用该应用程序时。
我注意到的是 processAutoLoginCookie 方法被调用了两次。我不知道为什么。方法本身的行为似乎是正确的,即更新数据库中的 token 并更新客户端中的 cookie。

对此的任何帮助将不胜感激。

谢谢你。

最佳答案

我遇到了完全相同的问题! processAutoLoginCookie 被连续调用两次,因此第一次调用成功,但第二次调用失败,因为第一次调用更新了 cookie。

我唯一的解决方案是子类化 PersistentTokenBasedRememberMeServices并覆盖 processAutoLoginCookie方法。我不得不复制 processAutoLoginCookie 的现有代码并注释掉 CookieTheftException 的抛出。 .

注意:我的解决方案会打开一个安全漏洞!

如果您愿意允许发生 Cookie 盗窃(我的系统在内部使用并且不包含敏感数据),那么此解决方案将起作用。

或者,您也可以子类化 PersistentTokenBasedRememberMeServices并添加一个更强大的解决方案,该解决方案仍会检查 Cookie 盗窃异常,但允许连续两次调用 processAutoLoginCookie被制造。

关于spring-security - Spring RememberMe 进程AutoLoginCookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4727890/

相关文章:

security - 带有 session Cookie 的 Spring Security RememberMe 服务

java - 无法将 Spring LDAP 与 Spring Security 一起使用

java - 配置 Swagger-UI 以获取 Spring 的 HttpSecurity Logout 端点

spring - OpenId 属性交换对 yahoo 不起作用?

java - StackOverflowError 尝试在 Spring WebSecurityConfigurerAdapter 中公开 AuthenticationManager

spring-security - 更改 Spring Security SAML2 登录的 URL

java - Remember Me 如何在 Spring Security 中工作?

spring-security - Spring Security 中记住我服务的问题

session - symfony2中的Before-Action方法

spring-security - Spring security Remember me 在 spring MVC 应用程序中不起作用。