我在WebSecurityConfigurerAdapter #configure方法中使用此语句来保护我的应用程序。 如果csrf被禁用( http.csrf()。disable(); ),那么一切正常,如果我删除这一行而不是我得到一个例外(Forbidden 403)。 我不清楚为什么 - 我想要防止csrf攻击。 有谁知道我做错了什么?
@覆盖 protected void configure(final HttpSecurity http)抛出异常{
final List<String> activeProfiles = Arrays.asList(environment.getActiveProfiles());
final CsrfTokenResponseHeaderBindingFilter csrfFilter = csrfTokenResponseHeaderBindingFilter();
http.addFilterAfter(csrfFilter, CsrfFilter.class).headers().cacheControl().xssProtection();
http.csrf().disable();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
final String[] restEndpointsToSecure = WebSecurityConfig.restEndpointsToSecure;
for (final String endpoint : restEndpointsToSecure) {
http.authorizeRequests().antMatchers("/" + endpoint + "/**").hasRole(UserRoleEnum.USER.toString());
}
xAuthTokenConfigurer.setDetailsService(userDetailsServiceBean());
final SecurityConfigurer<DefaultSecurityFilterChain, HttpSecurity> securityConfigurerAdapter = xAuthTokenConfigurer;
http.apply(securityConfigurerAdapter);
}
答案 0 :(得分:1)
您需要在请求中包含令牌。如果您使用Thymeleaf作为模板引擎,则会自动处理。该文档还描述了如何处理Ajax。