无法使用Spring Boot REST API设置基本身份验证

时间:2017-03-16 08:22:39

标签: spring spring-boot spring-security

我尝试使用Spring Boot设置RESTful API,并尝试启用基本身份验证。为什么我一直在点403 403拒绝错误?我在邮递员中将我的凭据作为标题发送(参见附图)。如果我删除.anyRequest.authenticated(),它可以正常工作。我不想删除它,因为我想为每个端点进行基本身份验证。我做错了什么?

Application.java

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

SecurityConfiguration.java

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/h2-console/*").permitAll()
                .anyRequest().authenticated();

        http.csrf().disable();
        http.headers().frameOptions().disable();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .inMemoryAuthentication()
                .withUser("user").password("password").roles("USER");
    }
}

Controller.java

@RestController
public class Controller {

    @RequestMapping("/test")
    public String index() {
        return "Greetings from Spring Boot!";
    }
}

enter image description here

1 个答案:

答案 0 :(得分:4)

在Spring文档中挖掘之后,似乎我理解每个链接方法调用的内容。

无论如何,简单的答案是我需要.and().httpBasic()来通过我的REST API启用基本HTTP身份验证。

.anyRequest().authenticated()只是要求对每个请求进行身份验证,但没有指定哪种方法。添加基本​​身份验证意味着我们可以使用基本身份验证来验证用户。

See more.