Я пытаюсь включить HSTS в моем приложении Spring Boot. Я добавил в свой WebSecurityConfig следующее (на основе Включить HTTP Strict Transport Security (HSTS) с приложением весенней загрузки ):
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
protected void configure(HttpSecurity http) throws Exception
{
// Other http configurations, e.g. authorizeRequests and CSRF
// ...
http.headers().httpStrictTransportSecurity()
.maxAgeInSeconds(Duration.ofDays(365L).getSeconds())
.includeSubDomains(true);
}
}
I do получает заголовок strict-transport-security
при запросах HTTPS, но максимальный возраст всегда равен 0
:
strict-transport-security: max-age=0; includeSubDomains
Я получаю точно такой же заголовок, если я не добавляю конфигурацию Spring, так что, похоже, моя конфигурация не принимается. Кажется, что это специфично для конфигурации HSTS, потому что другие конфигурации, например, http.authorizeRequests()
, работаем. Кажется, это указывает на то, что конфигурация HSTS каким-то образом перезаписывается, особенно если учесть, что по умолчанию Spring max-age составляет один год. Однако я смог найти любую другую конфигурацию, связанную с HSTS, в нашей кодовой базе.
Я также попытался установить точку останова в o.springframework.s.c.a.w.c.HeadersConfigurer.HstsConfig#maxAgeInSeconds
, чтобы проверить, вызывается ли она более одного раза. Мой звонок от configure
был единственным вызовом.
Кто-нибудь знает, почему моя конфигурация HSTS не используется? Или у вас есть другие идеи о том, как это отладить?