AccessToken を OAuth2ClientContext から RequestTemplate のヘッダーに自動的にコピーする RequestInterceptor があるため、内部サービスは、シナリオを開始したモバイル デバイスから取得したものと同じ AccessToken を使用して相互にシームレスに呼び出します。これが、サービス メソッドの承認を管理する方法です。これはインターセプター コードです。
public class FeignOAuthInterceptor implements RequestInterceptor {
private OAuth2ClientContext oauth2ClientContext;
public FeignOAuthInterceptor (OAuth2ClientContext oauth2ClientContext) {
this.oauth2ClientContext = oauth2ClientContext;
}
@Override
public void apply(RequestTemplate template) {
if (!template.headers().containsKey(PropertyBagFilter.AUTHORIZATION_HEADER) && oauth2ClientContext.getAccessTokenRequest().getExistingToken() != null) {
template.header(PropertyBagFilter.AUTHORIZATION_HEADER, String.format("%s %s", PropertyBagFilter.BEARER_TOKEN_TYPE,
oauth2ClientContext.getAccessTokenRequest().getExistingToken().toString()));
}
}
}
これは @Beans 構成です。
@Bean
public OAuth2ClientContext oAuth2ClientContext (){
return new DefaultOAuth2ClientContext();
}
@Bean
public RequestInterceptor feignOAuthInterceptor(OAuth2ClientContext oauth2ClientContext) {
return new FeignOAuthInterceptor(oauth2ClientContext);
}
@Bean
public OAuth2ProtectedResourceDetails oAuth2ProtectedResourceDetails(){
return new ResourceOwnerPasswordResourceDetails();
}
問題は、さまざまな FeignClient があり、その一部が SMS テキストに使用するサービスなどのサードパーティ サービス用であり、そこに AccessToken を送信したくないことです。
RequestInterceptor 内でどの FeignClient から来たのかを判断するにはどうすればよいですか?