Spring RememberMe processAutoLoginCookie

smk*_*smk 7 spring-security remember-me

我正在使用Spring Security 3.0.0和持久性RememberMe.当服务器重新启动并且浏览器窗口仍然打开时,我们需要能够继续使用该应用程序而无需登录 - 如果记住我已被选中.

我得到一个org.springframework.security.web.authentication.rememberme.CookieTheftException:无效的记住我令牌(系列/令牌)不匹配.当我尝试在服务器重启后继续使用该应用程序时,意味着以前的cookie盗窃攻击.我注意到processAutoLoginCookie方法被调用两次.我不知道为什么.方法本身的行为似乎是正确的,即更新数据库中的令牌并更新客户端中的cookie.

任何有关这方面的帮助将不胜感激.

谢谢.

jas*_*sop 1

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

我唯一的解决方案是子类化PersistentTokenBasedRememberMeServices并重写该processAutoLoginCookie方法。我必须复制 processAutoLoginCookie 的现有代码并注释掉CookieTheftException.

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

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

或者,您还可以子类化PersistentTokenBasedRememberMeServices并添加更强大的解决方案,该解决方案仍然检查 Cookie 盗窃异常,但允许进行两次连续调用processAutoLoginCookie