Spring 安全 - 基本身份验证
Spring security - Basic auth
我正在尝试使用 POST 请求插入数据,但出现 403 错误。当我使用 GET 时,基本身份验证有效。为了测试,我使用 Fiddler。
有什么问题?
安全配置:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/**").hasRole("USER").and()
.httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth
.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER");
}
}
请求 - POST:
User-Agent: Fiddler
Host: localhost:8080
Content-Length: 200
Content-Type: application/json
Authorization: Basic dXNlcjpwYXNzd29yZA==
请求正文:
{"name" : "name1",
"description" : "desc1"}
试试这个:
@Configuration
@EnableWebSecurity
public class HelloWebSecurityConfiguration
extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
来源:http://spring.io/blog/2013/07/03/spring-security-java-config-preview-web-security/
可能是 CSRF,spring 安全性默认启用。在您的 GET 请求中查找 X-XSRF-TOKEN header,并在您的 POST.
中使用该 header 和值
这样做之前请三思,但您可以使用
禁用 csrf
http.csrf().disable()
https://docs.spring.io/spring-security/site/docs/current/reference/html/web-app-security.html#csrf
我正在尝试使用 POST 请求插入数据,但出现 403 错误。当我使用 GET 时,基本身份验证有效。为了测试,我使用 Fiddler。
有什么问题?
安全配置:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/**").hasRole("USER").and()
.httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth
.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER");
}
}
请求 - POST:
User-Agent: Fiddler
Host: localhost:8080
Content-Length: 200
Content-Type: application/json
Authorization: Basic dXNlcjpwYXNzd29yZA==
请求正文:
{"name" : "name1",
"description" : "desc1"}
试试这个:
@Configuration
@EnableWebSecurity
public class HelloWebSecurityConfiguration
extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
来源:http://spring.io/blog/2013/07/03/spring-security-java-config-preview-web-security/
可能是 CSRF,spring 安全性默认启用。在您的 GET 请求中查找 X-XSRF-TOKEN header,并在您的 POST.
中使用该 header 和值这样做之前请三思,但您可以使用
禁用 csrfhttp.csrf().disable()
https://docs.spring.io/spring-security/site/docs/current/reference/html/web-app-security.html#csrf