Как заново меня работают в весенней безопасности?

StackOverflow https://stackoverflow.com/questions/3142722

Вопрос

Мне любопытно, как меня помнит работу и как он работает в весенней безопасности?

Я понимаю, что сервер отправляет долгоживущее печенье клиенту. И тогда клиент отправляет 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:

  1. Извлекает пароль из бэкэнда для данного имени пользователя
  2. Вычисляет md5Hex() имена пользователя / пароля / и т. Д. Из базы данных и сравнивает его со значением в cookie
  3. Если они совпадают - вы вошли в систему! Если не совпадение, то вы поставляли кованое cookie или одно из имени пользователя / пароля / ключа изменилось.

Основное предположение вот что хеш-функция - md5Hex() Часть выше - обеспечивает способ легко кодировать некоторые данные в одном направлении, но невероятно твердо и неправомерно (чтобы восстановить пароль из md5Hex текст).

Другие советы

Не путайте сеанс cookie с запомнить меня cookie.

Сеанс Cookie отправляется сервером (например, Tomcat) и используется для ассоциирования входящего запроса с сеансом.

Помните, что я Cookie отправляется на весеннюю безопасность для аутентификации клиента в разных сеансах (например, после истечения срока действия исходного сеанса или после перезапуска сервера).

Чтобы аутентифицировать пользователя, помните Me Cookie Spring Security предоставляет 2 стратегии:

  • TokenBasedRememberMeServices - Используется по умолчанию, менее безопасным - Cookie содержит хеш пароль и другие данные
  • PersistentTokenBasedRememberMeServices - Безопасный, требует доступа к базе данных - Cookie Concential Уникальный идентификатор, хранящийся в базе данных
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top