为了保护我的 API,我使用 Spring Boot 3 以及 spring-boot-starter-oauth2-resource-server,更准确地说是 3.1.2。我尝试按照 mani 教程所述配置安全性。它非常类似于:
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(auth -> auth
.requestMatchers("/swagger-ui**").anonymous()
.requestMatchers("/swagger-ui**").permitAll()
)
.oauth2ResourceServer(server -> server.jwt(Customizer.withDefaults()))
...
.build();
}
我真的补充了
@EnableWebSecurity
我还添加了 InMemoryUserDetailsManager 只是为了添加几个用户来尝试。我添加了 JwtEncoder 和 JwtDecoder 来处理“授权:承载...”标头。
虽然其中一些与授权和身份验证无关,但他们解释说它们是不同的,但他们从未解释过一种方法。我没有获得匿名访问权限。当我请求 localhost:8080/swagger-ui.html 时,我收到的只是来自 Spring 的一条消息“访问被拒绝”。如果我完全摆脱 Spring Security 和 Oauth2,我就可以获得访问权限。