Удалить заголовок ответа HTTP Strict Transport Security (HSTS) в Spring API токена oauth2

Я использую Spring Security и Spring Oauth2 и JWT в своем проекте API.
API по умолчанию для входа в систему, предоставленную Spring oauth 2, это / oauth / token

Этот API всегда добавляет в ответ заголовок «Strict-Transport-Security: max-age = 31536000; includeSubDomains». Но я не хочу этого в моей ситуации. И я удалил HSTS с приведенным ниже исходным кодом.

@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        // ...
        .headers()
            .httpStrictTransportSecurity().disable();
    }
}

В приведенном выше коде определенные мной API удаляются из заголовка HSTS. Но API / oauth / token по умолчанию по-прежнему возвращает HSTS в заголовке. Есть какой-либо способ сделать это ? Пожалуйста помоги.

Спасибо, Тин


person congtinit    schedule 16.10.2016    source источник


Ответы (1)


Я столкнулся с той же проблемой. Лучшее решение, которое я нашел, - это написать фильтр, который не позволяет другим устанавливать заголовок HSTS в целом.

@Component
@Order(value = Ordered.HIGHEST_PRECEDENCE)
public class HstsHeaderPreventionFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
            public void setHeader(String name, String value) {
                if (!name.equalsIgnoreCase("Strict-Transport-Security")) {
                    super.setHeader(name, value);
                }
            }
        });
    }

    @Override
    public void destroy() {

    }

}
person zidjian    schedule 27.03.2017