Java Spring security在所有api端点上提供401

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() {

我看过很多关于同一问题的帖子,但是没有一个解决方案对我有效

我有一个用spring安全性保护的API,如下所示

@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,请检查此链接是否有帮助