允许使用过期jwt令牌的用户请求

2eafrhcq  于 2021-09-30  发布在  Java
关注(0)|答案(1)|浏览(240)

我有一些用户正在使用有效的jwt令牌访问一些api,但由于他们的任务比令牌过期时间花费更多的时间,当他们再次访问api时,jwt令牌已经过期。他们不应该刷新他们的令牌,他们必须使用相同的令牌,甚至使用过期的令牌访问一些API。
我正在使用 spring.security.oauth2.resourceserver 通过我们的授权服务器进行身份验证。
因此,我试图实现的是,如果令牌来源是正确的,并且具有良好的格式,那么即使令牌过期,我也需要接受请求。
是的,我知道这似乎不是一个好方法,但如果这是可能的,请教育我。
我已经读过了 ClientHttpRequestInterceptor 从这里跳转到的源代码 resource server 但是找不到合适的方法。

hi3rlvi2

hi3rlvi21#

我完全建议您不要这样做,因为如果某个恶意用户从某人处窃取jwt,他将能够永远请求受保护的资源,因为令牌不会过期。在这种情况下,您应该做的是刷新令牌,请转到文档以刷新访问令牌。
但出于知识目的,可以提供一个自定义 JwtDecoder 这可以按照您想要的方式验证jwt。你应该暴露一个秘密 @Bean 同类 JwtDecoder 根据您的特定配置,如下所示:

@Bean
public JwtDecoder jwtDecoder() {
    OAuth2TokenValidator<Jwt> myCustomJwtValidator = new MyImplementationOfOAuth2TokenValidator();
    NimbusJwtDecoder jwtDecoder = NimbusJwtDecoder.withPublicKey(myPublicKey).build();
    jwtDecoder.setJwtValidator(myCustomJwtValidator);
    return jwtDecoder;
}

您可以在文档中找到更多详细信息。

相关问题