Весеннее приложение без сохранения состояния - JSESSIONID еще генерируется - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь сделать Java-приложение действительно не сохраняющим состояние (хотя по-прежнему используется базовая аутентификация), но с тех пор наш контейнер сервлета всегда генерирует cookie JSESSIONID ( Tomcat ).

Это мой стек:

Java: 1.8
Spring: 4.1.6.RELEASE
Spring Security: 4.0.2.RELEASE
Tomcat: 7.0.93

Мы используем конфигурацию XML, так что это мой файл конфигурации безопасности, где я использовал опцию STATELESS для создания сеанса:

<beans:bean id="requestCache" class="org.springframework.security.web.savedrequest.NullRequestCache" />

<http use-expressions="true" create-session="stateless" pattern="/api/**">
        <request-cache ref="requestCache"/>
        <csrf disabled="true"/>

        <!-- REST ENDPOINTS PATH BASED -->
        <intercept-url pattern="...."/>
        <intercept-url pattern="...."/>
</http>

Как указано в этом ответе , этого должно быть достаточно, чтобы Spring Security не создавал сеанс , но другие части моего приложения могли бы его создать.

Вопрос в том, как отследить, кто запрашивает создание сеанса?

В основном я пытаюсь адаптировать бэкэнд, используемый Java-приложением с состоянием, для использованиядругим клиентским приложениям без сохранения состояния, которые будут выполнять вызовы только по определенному пути (/api/**), как описано в моем файле конфигурации безопасности.

Эта часть с состоянием использует некоторые компоненты, которые ограничены сессией ;Мне нужно использовать те же компоненты, но в request-scope , таким образом, я должен убедиться, что JSESSIONID cookie никогда не создается.

Попытка, например, отключить altogheter cookie в Tomcat (или в браузере) выполняет это, поэтому я пытаюсь сделать это напрямую с помощью Spring.

1 Ответ

1 голос
/ 26 апреля 2019

Если вы хотите быть уверенным, что сеансы не созданы, создайте фильтр и оберните HttpServletRequest классом, который блокирует / терпит неудачу / игнорирует вызовы getSession(...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...