如何使用 Spring Security 6 自定义 JWT 身份验证中的错误处理?

问题描述 投票:0回答:1

我使用以下依赖项使用 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 身份验证工作流程中自定义错误消息的方法吗?

java spring spring-boot spring-security oauth-2.0
1个回答
2
投票

也许不是您正在寻找的内容,但错误响应位于标题中。

请参阅承载令牌失败

© www.soinside.com 2019 - 2024. All rights reserved.