Spring安全性默认配置总是抛出401

时间:2019-04-23 13:56:18

标签: java spring rest spring-security

我正在使用一些基本服务和实体创建一个新的Spring REST应用程序。

我添加了Spring Security,并且没有覆盖任何类,我只是向application.properties添加了用户名和密码。

到目前为止,我打开Postman尝试了一个端点,它总是返回401到我的请求。

我在邮递员中尝试通过“基本身份验证”(WWW-Authenticate标头要求)设置授权,并尝试使用标头中的“ Realm”值进行“摘要身份验证”。但是,它们都不起作用。


这是我的 application.properties

中的所有内容
spring.security.user.name=root
spring.security.user.password=root

这是我的要求

https://imgur.com/URM3TGD

(对不起,由于我的声誉,我无法嵌入图片)

这是端点

@PostMapping("saveUsuario")
public Usuario saveUsuario(Usuario usuario) {
        return usuarioRepository.save(usuario);
}

(如果可能的话)我不想覆盖任何Spring Security类,只是“按原样使用”。

谢谢!

2 个答案:

答案 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);
    }
}
  • 首先禁用CSRF。
  • 然后启用Cors。
  • 我设置为我希望任何请求都经过完全认证
  • 挑战类型为HTTP基本
  • 我禁止创建cookie,因此它将始终要求提供凭据。

到目前为止,一切正常!

答案 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

请参见https://github.com/spring-projects/spring-boot/blob/v1.5.0.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/SecurityProperties.java