Tôi đang sử dụng Spring-Security 3.2.0.RC2 với cấu hình Java. Tôi thiết lập cấu hình HttpSecurity đơn giản yêu cầu auth cơ bản trên/v1/**. yêu cầu GET làm việc nhưng yêu cầu POST thất bại với:Trong Spring-Security với Java Config, tại sao httpBasic POST muốn mã thông báo csrf?
HTTP Status 403 - Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
cấu hình an ninh của tôi trông như thế này:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Resource
private MyUserDetailsService userDetailsService;
@Autowired
//public void configureGlobal(AuthenticationManagerBuilder auth)
public void configure(AuthenticationManagerBuilder auth)
throws Exception {
StandardPasswordEncoder encoder = new StandardPasswordEncoder();
auth.userDetailsService(userDetailsService).passwordEncoder(encoder);
}
@Configuration
@Order(1)
public static class RestSecurityConfig
extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/v1/**").authorizeRequests()
.antMatchers("/v1/**").authenticated()
.and().httpBasic();
}
}
}
Bất kỳ giúp đỡ về vấn đề này đánh giá rất cao.
Nếu bạn không muốn tắt csrf (vì lý do đó) bạn có thể thêm một trường ẩn với giá trị csrf và thêm giá trị như starmandeluxe gợi ý trong bài đăng được chấp nhận. Điều này làm việc tốt cho tôi, mà không vô hiệu hóa csrf – Xtroce
@Xtroce là đúng, mặc dù trong trường hợp của tôi, tôi đã phải thêm 'X-CSRF-TOKEN' vào tiêu đề * bài * *. (Thêm '_csrf' vào bài đăng * tham số * không hoạt động.) – inanutshellus
Thêm vào nhận xét @Xtroce, nếu bạn sử dụng thymeleaf cho templating, bạn có thể thêm