仅当资源在 spring 安全中受到保护时,如何检查访问令牌?

How to check access token only if resource is secured in spring security?

在我的 Spring 引导项目中,我有一些端点需要身份验证,而另一些则不需要。我正在使用 spring-security-oauth2-autoconfigure 依赖项。问题是当我想访问不需要身份验证且无效 access_token 的资源时,我收到错误 "error": "invalid_token"。 如果我的方法不安全,我该如何防止检查访问令牌?

ResourceServerConfiguration.java

@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.headers().frameOptions().disable().and().authorizeRequests().antMatchers("/graphql/**")
                .permitAll();
    }

}

WebSecurityConfiguration.java

@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/oauth/token").permitAll()
                .anyRequest().authenticated().and().httpBasic().and().csrf().disable();
    }
}

要为特定资源禁用 spring 安全链,您可以在 WebSecurityConfiguration class

中添加如下模式的忽略网络请求

@Override
public void configure(WebSecurity webSecurity) throws Exception
{
    webSecurity
        .ignoring()
        .antMatchers("/resourcename**");
}