Spring Security Anotation @EnableWebSecurity не работает в проекте Spring MVC - PullRequest
0 голосов
/ 08 апреля 2020

Мне нужно включить X-Frame-Options: SAMEORIGIN в моем весеннем MVC проекте, чтобы вернуть этот параметр в заголовок ответа http. Проект развернут на Apache Tomcat 9.

Вот моя конфигурация веб-безопасности

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.headers().frameOptions().sameOrigin();
    }
}

Вот как я инициализирую сервлет диспетчера

public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{AppConfig.class, WebSecurityConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

В весенней безопасности В документации (https://docs.spring.io/spring-security/site/docs/5.3.1.RELEASE/reference/html5/#headers) упоминается, что

Spring Security предоставляет набор заголовков ответов HTTP по умолчанию для обеспечения безопасности по умолчанию.

Но я не вижу никакого заголовка безопасности в заголовке ответа, похоже, что Spring Spring не включена в моем проекте.

enter image description here

Если я добавлю опция заголовка вручную в методе класса @Controller работает

@Controller
public class WController {
    @GetMapping("/hello")
    public String sayHello(HttpServletResponse response, Model model) {
        response.setHeader("X-Frame-Options", "SAMEORIGIN");
        return "htmlPageTemplate";
    }
}

enter image description here

Пожалуйста, проверьте, что я сделал не так. Как правильно исправить и включить веб-безопасность?

1 Ответ

0 голосов
/ 28 апреля 2020

Я пропустил filter, просто добавил новый класс для расширения AbstractSecurityWebApplicationInitializer, и это решило проблему.

public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {

}
...