0

У меня есть следующий сценарий:Невозможно получить объект из сессии

  1. получить доступ к веб-приложения - что делает использование пружинной безопасности, создать объект сессии, скажем, телегу с некоторыми записями.
  2. Я обращаюсь к приложению с помощью успокаивающего клиента. У меня есть: пользователь, пароль, JSESSIONID cookie с соответствующим значением. Оба используют базовую аутентификацию.

В результате? Я получаю объект - корзину на этом случае - но он пуст. У него нет записей, которые были добавлены. Это похоже на то, что, хотя мне удалось успешно пройти аутентификацию, существует механизм, который создает новый экземпляр объекта вместо того, чтобы давать мне существующий.

Есть ли у вас какие-либо идеи о безопасности весны, так или иначе не позволяйте этому случиться.

Я также заметил, что ... Я отправляю Cookie JSESSIONID = Number, и когда он отвечает, он дает мне другое число для JSESSIONID, я полагаю, что даже если у меня есть права доступа, и он позволяет мне войти в систему, он не позволяет мне использовать один и тот же сеанс, он просто создает новый, и моя корзина там пуста.

Любая помощь будет принята с благодарностью!

+0

Вы уверены, что вы посылаете же печенье? Пожалуйста, используйте Fiddler, чтобы убедиться, что вы отправляете тот же JSESSIONID – Michael

+0

Вы видели ответ ниже? Было ли это полезно? – Michael

+0

Большое спасибо за ваши комментарии Майкл! В настоящее время я тестирую Fiddler, и я дам вам знать, как все прошло. – user1532449

ответ

0

SpringSecurity заменяет файл cookie JSESSIONID после аутентификации (и настоятельно рекомендуется не отключать эту функцию для предотвращения атаки Session Fixation). Следующая конфигурация включает функцию

<http ...> 
    ... 
    <session-management session-fixation-protection="migrateSession" /> 
</http> 

Чтобы скопировать существующие атрибуты сеанса используют migrateSession.

Атрибуты значения в соответствии с документацией http://static.springsource.org/spring-security/site/docs/3.2.x/reference/springsecurity-single.html#session-mgmt:

  • migrateSession - создает новую сессию и копирует существующие атрибуты сеанса для новой сессии. Это значение по умолчанию.
  • none - Не делайте ничего. Исходная сессия будет сохранена.
  • newSession - создайте новый «чистый» сеанс, не копируя существующие данные сеанса.
0

Весна создает новый сеанс аутентификации. Это называется защитой фиксации сеанса. Подробнее об этом здесь:

+0

Большое спасибо Кевину. Я уже удалил защиту для этого, выполнив следующие действия: Вот что я делаю: 1.- Доступ к веб-приложению, 2.- Получите значение для файла cookie JSESSIONID. 3. Доступ к клиенту RESTFul с использованием тех же учетных данных, аутентификация (основной), и я отправляю файл cookie JSESSIONID со значением, которое я получил в 2. Но тем не менее, хотя я могу аутентифицировать его, он всегда создает новый и поэтому моя корзина возвращается пустой.Любая идея о том, как преодолеть это? Еще раз спасибо за вашу любезную помощь! – user1532449

+0

Можете ли вы поделиться своей конфигурацией безопасности весны? – kevin847