gpt4 book ai didi

spring-cloud-feign - 用于 JWT token 验证的 Feign 客户端自定义拦截器

转载 作者:行者123 更新时间:2023-12-04 00:32:40 29 4
gpt4 key购买 nike

我是新来的 Spring 和假装和探索几天以来。我能够向我们的 protected 资源(用户名/密码)发出身份验证请求,并在后续请求 header 中使用身份验证服务返回的 JWT token 。但是,我只想在 token 过期时使用相同的凭据调用身份验证服务。Spring 云具有 OAuth2FeignRequestInterceptor,它执行完全相同的操作,但使用客户端 ID 和 key 。

任何此类用于处理由用户名和密码生成的 token 的自定义拦截器?

最佳答案

如果您的 JWT token 提供程序符合 OAuth 2.0,您可以使用 OAuth2ProtectedResourceDetails 对象配置 OAuth2FeignRequestInterceptor。此对象是所有 OAuth 2.0 授权类型信息的基类。在您的情况下,我建议改用 ResourceOwnerPasswordResourceDetails 。这将允许您使用用户名和密码配置拦截器。

@Configuration
public class OAuth2RequestInterceptorConfiguration {

@Bean
public OAuth2FeignRequestInterceptor requestInterceptor() {
OAuth2ClientContext clientContext = new DefaultOAuth2ClientContext();
OAuth2ProtectedResourceDetails resourceDetails =
new ResourceOwnerPasswordResourceDetails();
resourceDetails.setUsername("username");
resourceDetails.setPassword("password");
return new OAuth2FeignRequestInterceptor(clientContext, resourceDetails);
}
}

对于其他情况,您需要创建自己的 RequestInterceptor

public class MyRequestInterceptor implements RequestInterceptor {

private String jwt;
private LocalDateTime expirationDate;

@Override
public void apply(RequestTemplate requestTemplate) {
/* validate and refresh your token, this sample is not thread safe */
if (LocalDateTime.now().isAfter(expirationDate)) {
requestToken();
}

/* use the token */
requestTemplate.header("Authorization: Bearer " + this.jwt);
}
}

关于spring-cloud-feign - 用于 JWT token 验证的 Feign 客户端自定义拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48687206/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com