Я получаю сообщение об ошибке Not injecting HSTS header, но после поиска этого сообщения не понимаю.

o.s.s.w.header.writers.HstsHeaderWriter: заголовок HSTS не внедряется, поскольку он не соответствует requestMatcher org.springframework.security.web.header.writers.HstsHeaderWriter$SecureRequestMatcher@30cc5ff

То, что я сделал, ниже.

Запрос API http: // localhost: 8083 / api / v1 / users / login

Веб-конфигурация

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.csrf().disable();



        http.authorizeRequests()
                .antMatchers(HttpMethod.POST, SecurityConstants.SIGN_UP_URL)
                .permitAll();

        http.csrf().disable().addFilterBefore(corsFilter, AuthorizationFilter.class)
                .authorizeRequests()
                .antMatchers("/api/v1/**").authenticated();


    protected AuthenticationFilter getAuthenticationFilter() throws Exception {
        final AuthenticationFilter filter = new AuthenticationFilter(authenticationManager());
        filter.setFilterProcessesUrl("/api/v1/users/login");
        return filter;
    }

CorsFilter

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter implements Filter {

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

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        final HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.setHeader("Access-Control-Allow-Origin", "*");

        // without this header jquery.ajax calls returns 401 even after successful login and SSESSIONID being succesfully stored.
        response.setHeader("Access-Control-Allow-Credentials", "true");

        response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Authorization, Origin, Content-Type, Version");
        response.setHeader("Access-Control-Expose-Headers", "X-Requested-With, Authorization, Origin, Content-Type");

        final HttpServletRequest request = (HttpServletRequest) servletRequest;
        if (!request.getMethod().equals("OPTIONS")) {
            filterChain.doFilter(request, response);
        } else {
            // do not continue with filter chain for options requests
        }
    }

    @Override
    public void destroy() {

    }
}
2
newBike 27 Окт 2019 в 09:00

1 ответ

Лучший ответ

HSTS означает Http Strict Transport Security и является одним из заголовки по умолчанию, включенные при использовании Spring Security.

Если у вас настроена собственная конфигурация безопасности и вы уверены, что можете отключить заголовок безопасности HSTS, используйте:

http.headers().httpStrictTransportSecurity().disable();
2
Michiel 27 Окт 2019 в 09:38