我尝试使用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!";
}
}
答案 0 :(得分:4)
在Spring文档中挖掘之后,似乎我理解每个链接方法调用的内容。
无论如何,简单的答案是我需要.and().httpBasic()
来通过我的REST API启用基本HTTP身份验证。
.anyRequest().authenticated()
只是要求对每个请求进行身份验证,但没有指定哪种方法。添加基本身份验证意味着我们可以使用基本身份验证来验证用户。