我使用以下依赖项使用 Spring Boot 实现了一个简单的资源服务器。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
<version>2.4.12</version>
</dependency>
内置的默认工作流程可以满足我的大部分要求。不过,如果我可以自定义错误处理部分那就太好了。
目前,当我发出未经授权的请求时,我只会收到带有 401 状态代码的空白响应。
我想发送自定义错误消息,例如“访问令牌无效”、“访问令牌丢失”、“访问令牌已过期”等,而不是仅包含 401 代码的空响应。这在调试时会有很大帮助。
我尝试实现接口
AuthenticationEntryPoint
和
AuthenticationFailureHandler
。但是,我还没有成功。
我从 Spring Security 文档中引用了以下文章:
https://docs.spring.io/spring-security/reference/servlet/oauth2/resource-server/jwt.html
另外,这是我的网络安全配置:
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeHttpRequests((authz) -> authz
.requestMatchers("/public/**").permitAll()
.anyRequest().authenticated()
)
.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt);
return http.build();
}
}
有人可以提供一种在 JWT 身份验证工作流程中自定义错误消息的方法吗?