Как исправить ошибку несоответствия «Неверный запоминающийся токен (серия/токен)»?

Я использую постоянные логины Spring Security. Я сохраняю токен «запомнить меня» в своей базе данных. Иногда я получаю следующую ошибку:

| Error 2013-07-02 13:54:14,859 [http-nio-8080-exec-2] ERROR [/buddyis].[gsp]  -  
Servlet.service() for servlet [gsp] in context with path [/buddyis] threw exception
Message: Invalid remember-me token (Series/token) mismatch. Implies previous cookie theft attack.
Line | Method
->> 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    615 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run . . . in java.lang.Thread 

В моем Config.groovy:

grails.plugins.springsecurity.logout.handlerNames = [
'rememberMeServices', 'securityContextLogoutHandler', 'mySecurityEventListener'
]
grails.plugins.springsecurity.rememberMe.cookieName = 'RememberMe'
grails.plugins.springsecurity.rememberMe.alwaysRemember = true
grails.plugins.springsecurity.rememberMe.tokenValiditySeconds = 31536000 // 365 days
grails.plugins.springsecurity.rememberMe.key = 'rememberMe'
grails.plugins.springsecurity.rememberMe.persistent = true
grails.plugins.springsecurity.rememberMe.persistentToken.domainClassName = 'mypackage.PersistentLogin'

Как исправить эту ошибку? Что это значит?


person confile    schedule 02.07.2013    source источник
comment
Какой набор конфигурации у вас есть сейчас для rememberMe?   -  person dmahapatro    schedule 02.07.2013
comment
@dmahapatro Я обновил свой конфиг.   -  person confile    schedule 02.07.2013
comment
Я думаю, что вы стали жертвой этой ошибки, которая еще не устранена. В конце концов, я думаю, есть обходной путь, предложенный Тоби Хобсоном.   -  person dmahapatro    schedule 02.07.2013
comment
Нет, это другой вопрос. Я использую постоянные логины, а не openID.   -  person confile    schedule 03.07.2013
comment
Я знал, что ты вернешься с этим заявлением. Читайте каждый комментарий в баге. Это влияет на основной плагин. Я также подтверждаю, что ошибка затрагивает только основной плагин — ищите эту строку.   -  person dmahapatro    schedule 03.07.2013
comment
Я прочитал это, но это не решает мою проблему.   -  person confile    schedule 03.07.2013
comment
@dmahapatro какие-нибудь другие предложения по решению этой проблемы?   -  person confile    schedule 20.07.2013


Ответы (1)


У меня такое же исключение на моем мобильном веб-сайте. Эта проблема возникает, когда HTTP-сеанс пользователя, вошедшего в систему с помощью функции «Запомнить меня», истекает и когда пользователь снова обращается к веб-сайту, если имеется несколько параллельных (ajax) запросов.

Это происходит потому, что первый из параллельных запросов обновит токен «запомнить меня», а токен (который признан недействительным), все остальные запросы будут иметь несоответствие сохраненному токену.

Таким образом, у вас не так много вариантов исправить это, вариант - не иметь параллельных запросов, но в мобильных приложениях подхалимов это мало возможно.

Что я сделал, так это имел /me запросы, которые я делаю первым делом при запуске/загрузке веб-приложения, и после этого я могу выполнять несколько параллельных запросов, не беспокоясь о том, что столкнусь с этой проблемой.

person Dimitrii    schedule 19.10.2016