我正在使用一些基本服务和实体创建一个新的Spring REST应用程序。
我添加了Spring Security,并且没有覆盖任何类,我只是向application.properties添加了用户名和密码。
到目前为止,我打开Postman尝试了一个端点,它总是返回401到我的请求。
我在邮递员中尝试通过“基本身份验证”(WWW-Authenticate标头要求)设置授权,并尝试使用标头中的“ Realm”值进行“摘要身份验证”。但是,它们都不起作用。
这是我的 application.properties
中的所有内容spring.security.user.name=root
spring.security.user.password=root
这是我的要求
(对不起,由于我的声誉,我无法嵌入图片)
这是端点
@PostMapping("saveUsuario")
public Usuario saveUsuario(Usuario usuario) {
return usuarioRepository.save(usuario);
}
(如果可能的话)我不想覆盖任何Spring Security类,只是“按原样使用”。
谢谢!
答案 0 :(得分:0)
这就是我发现的东西。
由于@jzheaux,我们发现问题出在csrf配置(使用POST请求)。
因此我被迫重写 WebSecurityConfigurerAdapter 类以禁用它。
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
}
}
但是,可以不经身份验证调用端点!
所以,这是最终代码:
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.cors();
http.authorizeRequests().anyRequest().fullyAuthenticated();
http.httpBasic();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);
}
}
到目前为止,一切正常!
答案 1 :(得分:-1)
每https://docs.spring.io/spring-boot/docs/1.5.0.RELEASE/reference/htmlsingle/#boot-features-security
您应该使用
更改密码。 security.user.password=root
代替spring.security.user.password=root
可覆盖的相似安全属性在@ConfigurationProperties类中:SecurityProperties.java