Pab*_*yor 3 spring-cloud-feign feign
几天以来,我是春天的新手,假装和探索。我能够向我们受保护的资源(用户名/密码)发出身份验证请求,并在后续请求标头中使用身份验证服务返回的 JWT 令牌。但是,我只想在令牌过期时使用相同的凭据调用 auth 服务。Spring 云有 OAuth2FeignRequestInterceptor,它正在做完全相同的事情,但使用客户端 ID 和密钥。
任何用于处理由用户名和密码生成的令牌的自定义拦截器?
如果您的 JWT 令牌提供程序符合 OAuth 2.0,您可以OAuth2FeignRequestInterceptor使用OAuth2ProtectedResourceDetails对象配置, 。此对象是所有 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);
}
}
Run Code Online (Sandbox Code Playgroud)
对于其他情况,您将需要创建自己的 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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12359 次 |
| 最近记录: |