Конфигурация Spring Strict Transport Security (HSTS) не работает - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь включить 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 не используется? Или у вас есть другие идеи о том, как это отладить?

1 Ответ

0 голосов
/ 10 июля 2019

Оказывается, что это было вызвано конфигурацией Cloudflare, которая переписала заголовок и установил максимальный возраст 0. 0. 1001 *

Также было проще обновить конфигурацию Cloudflare, чем обновлять конфигурацию в каждой микро-сервис.

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