Как заново меня работают в весенней безопасности?
-
01-10-2019 - |
Вопрос
Мне любопытно, как меня помнит работу и как он работает в весенней безопасности?
Я понимаю, что сервер отправляет долгоживущее печенье клиенту. И тогда клиент отправляет Cookie Back, и сервер может распознать клиента, потому что на сервере есть что-то вроде хеш-карта с соотношениями. cookie --> session
.
Я не понимаю, как сервер [Server-Side Application] распознает клиент по файлу cookie после того, как сервер [Tomcat] был перезапущен.
Как и где весенняя безопасность сохраняет cookie-session
Карта перед выключением сервера? Это специфично для сервера (то есть что-то другое происходит в Tomcat, пристани для пристани и т. Д.)?
PS Еще одна связанная проблема с весенней безопасностью и передислокацией: даже если я не отмечу RememberMe
И войти, я все еще узнал после перераспределения около 3 минут. Это исправлено?
Решение
Документы Spring Security обсуждают Как это на самом деле работает.
Этот подход использует хеширование для достижения полезной вспомогательной стратегии. По сути, Cookie отправляется в браузер при успешной интерактивной аутентификации, причем файл cookie составлен следующим образом:
base64(username + ":" + expirationTime + ":" + md5Hex(username + ":" + expirationTime + ":" password + ":" + key))
...
Поскольку такой токен помните-Me действителен только для указанного периода, и при условии, что имя пользователя, пароль и ключ не меняется. Примечательно, что это имеет потенциальную проблему безопасности в том, что захваченный вспомогательный токен Me будет использоваться от любого пользовательского агента до тех пор, пока не истекает токен. Это та же проблема, что и с помощью дайджестской аутентификации.
В основном, cookie содержит имя пользователя, пароль, время истечения и ключ (который указываешь), все из которых хэш вместе. Когда ваш браузер отправляет содержимое этого cookie на сервер, Spring Security:
- Извлекает пароль из бэкэнда для данного имени пользователя
- Вычисляет
md5Hex()
имена пользователя / пароля / и т. Д. Из базы данных и сравнивает его со значением в cookie - Если они совпадают - вы вошли в систему! Если не совпадение, то вы поставляли кованое cookie или одно из имени пользователя / пароля / ключа изменилось.
Основное предположение вот что хеш-функция - md5Hex()
Часть выше - обеспечивает способ легко кодировать некоторые данные в одном направлении, но невероятно твердо и неправомерно (чтобы восстановить пароль из md5Hex
текст).
Другие советы
Не путайте сеанс cookie с запомнить меня cookie.
Сеанс Cookie отправляется сервером (например, Tomcat) и используется для ассоциирования входящего запроса с сеансом.
Помните, что я Cookie отправляется на весеннюю безопасность для аутентификации клиента в разных сеансах (например, после истечения срока действия исходного сеанса или после перезапуска сервера).
Чтобы аутентифицировать пользователя, помните Me Cookie Spring Security предоставляет 2 стратегии:
TokenBasedRememberMeServices
- Используется по умолчанию, менее безопасным - Cookie содержит хеш пароль и другие данныеPersistentTokenBasedRememberMeServices
- Безопасный, требует доступа к базе данных - Cookie Concential Уникальный идентификатор, хранящийся в базе данных