При использовании Spring Security управление сеансом шире, чем сохранение аутентифицированного пользователя в сеансе (как описано в разделе Управление сеансами Руководства по безопасности Spring).
Функции, связанные с сеансами HTTP, обрабатываются комбинацией интерфейса SessionManagementFilter
и SessionAuthenticationStrategy
, которому делегируется фильтр.Типичное использование включает в себя предотвращение атак защиты с фиксацией сеансов, обнаружение тайм-аутов сеансов и ограничение количества одновременных открытий сеансов, которые может иметь аутентифицированный пользователь.
Сказать sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
не означает, что ваше приложение не имеет состояния, это означает, что Spring Security не будет создавать сеанс.Если в вашем приложении есть что-то еще, все еще создающее сеанс, Spring Security попытается защитить его от атаки с фиксацией сеанса.
Как выполняется атака с фиксацией сеанса, зависит от настроенной стратегии;по умолчанию изменяется идентификатор сеанса при каждом запросе.В Servlet 3.1 и более новых контейнерах ChangeSessionIdAuthenticationStrategy
является значением по умолчанию, если не была сделана явная настройка.В Servlet 3.0 и ниже по умолчанию используется migrateSession
.
Вы можете отключить защиту от фиксации сеанса, выполнив sessionFixation().none()
;однако вам нужно задаться вопросом, действительно ли это то, что вы действительно хотите, так как это потенциально делает ваше приложение менее безопасным.
В зависимости от того, какие сбои / сбои вы можете исправить, вместо того, чтобы сделать ваше приложение менее безопасным.