При использовании spring-session, например, для сохранения вашей сессии в reddis, это действительно делается автоматически. Куки, чем созданный org.springframework.session.web.http.CookieHttpSessionStrategy который в CookieHttpSessionStrategy проверки # createSessionCookie если запрос приходит через HTTPS и наборы обеспечения соответственно:
sessionCookie.setSecure(request.isSecure());
Если вы не использования Spring-session, вы можете настроить безопасные файлы cookie с помощью ServletContextInitializer. Используйте application property, чтобы установить его значение true/false в зависимости от профиля.
@Bean
public ServletContextInitializer servletContextInitializer(@Value("${secure.cookie}") boolean secure) {
return new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.getSessionCookieConfig().setSecure(secure);
}
};
}
application.properties (используемый в разработчика, когда профиль 'Prod' не активен):
secure.cookie=false
application-prod.properties (используется только, когда профиль 'Prod' активен, переписывает значение в application.properties):
secure.cookie=false
запустить приложение на сервере прод с:
--spring.profiles.active=prod
Похоже на какое-то усилие, если вы пока не работали с профилями, но вам, скорее всего, понадобится профиль для prod-среды, поэтому его действительно стоит.
CookieHttpSessionStrategy упоминает, что безопасный флаг добавляется автоматически, когда HttpServletRequest # isSecure() возвращает значение true. Как этот метод определяет, что запрос действительно отправляется через https, если ssl завершается на nginx, а не на tomcat? Или наоборот, как я могу сказать, что запрос был зашифрован в какой-то момент? –
Как правило, ваш заголовок запроса ssl terminator задает значение 'x-forwarded-proto = https', а ваш веб-сервер может использовать его для отметки запроса как isSecure. –
Настройка secure.cookie на true/false, похоже, ничего не делает для нас. Перед этим мы используем nginx и aws loadbalancer, поэтому нам нужно как-то закрепить это. Есть ли способ заставить это быть включенным? –