三种方式
A. 我能够绕过 Spring Boot 安全过滤,同时将 @EnableResourceServer 保留在 @SpringBootApplication Application 类中
1.permitall 用于 ResourceServerConfigurerAdapter 覆盖中的 anonymous
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ResourceAccessConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/**").permitAll().anyRequest().anonymous();<< this will allow any resource endpoint access when the HTTP request Authorization header not available
//http.authorizeRequests().antMatchers("/**").permitAll();<< also can
}
}
spring boot 应用初始化器
@SpringBootApplication
@EnableResourceServer << keep this
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2.移除授权头(从HTTP请求中移除OAuth 2.0 Access Token)
B. 也可以通过删除@EnableResourceServer 并在 application.yml 中设置参数来禁用端点的安全过滤,如下所示。
删除 @EnableResourceServer 后,spring 安全配置将回退到默认值 org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
1.application.yml,security.ignored 属性
security:
ignored: /**
2.spring boot 应用初始化器
@SpringBootApplication
//@EnableResourceServer << remove this
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
3.去掉同上的授权头
C. 还可以通过删除 @EnableResourceServer 并添加配置类扩展 WebSecurityConfigurerAdapter 来禁用端点的安全过滤
1.
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/**").permitAll().anyRequest().authenticated().and().csrf().disable();
}
}
2.//@EnableResourceServer 注释同上
3.去掉同上的授权头