Spring RememberMe processAutoLoginCookie

时间:2011-01-18 18:57:41

标签: spring-security remember-me

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

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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

我唯一的解决方案是继承PersistentTokenBasedRememberMeServices并覆盖processAutoLoginCookie方法。我必须复制processAutoLoginCookie的现有代码并注释掉CookieTheftException的抛出。

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

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

或者,您也可以继承PersistentTokenBasedRememberMeServices并添加一个更强大的解决方案,该解决方案仍会检查Cookie Theft Exceptions,但允许连续两次调用processAutoLoginCookie