Я пытаюсь сделать 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.