Java Spring security在所有api端点上提供401
我看过很多关于同一问题的帖子,但是没有一个解决方案对我有效 我有一个用spring安全性保护的API,如下所示Java Spring security在所有api端点上提供401,java,spring,spring-security,spring-data-jpa,Java,Spring,Spring Security,Spring Data Jpa,我看过很多关于同一问题的帖子,但是没有一个解决方案对我有效 我有一个用spring安全性保护的API,如下所示 @EnableWebSecurity @Component public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Autowired private UserService userService; public SecurityConfiguration() {
@EnableWebSecurity
@Component
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired private UserService userService;
public SecurityConfiguration() {
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/actuator/shutdown", "/api/register");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.anyRequest().authenticated()
.and().httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(userService)
.passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
我需要端点/api/register
和/exactor/shutdown
无需验证即可使用。但是,事实证明,所有端点都返回相同的401
状态代码。试试这个
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
//no authentication needed for these context paths
.authorizeRequests()
.antMatchers("/your Urls that dosen't need security/**").permitAll()
我们实施了上文所述的类似方法
http
.authorizeRequests()
.antMatchers(AUTH_WHITELIST).permitAll()
.anyRequest().authenticated()
.and().httpBasic()
您可以如下所示保留“AUTH_白名单”,以继续添加多个端点
private static final String[] AUTH_WHITELIST = {
// -- swagger ui
"/api/register",
"/actuator/shutdown"
};
谢谢你的帮助。但是,它仍然让人担忧!我将
antMatcher
添加到现有语句中,而不是将其替换为您的语句。它正在工作。但是,由于csrf
现在没有被禁用,它将403
而不是401
用于未经身份验证的访问。它工作正常,但由于csrf
没有被禁用,它将403
而不是401
用于未经身份验证的访问。您需要处理csrf,请检查此链接是否有帮助