Обойти глобальный список RequestInterceptors для одного FeignClient
В наших микросервисах мы используем Feign для связи между сервисами, у нас есть специальный RequestInterceptor для обеспечения безопасности и прикрепления нашего токена JWT к каждому запросу.
Я хочу использовать Feign для звонков в стороннюю службу за пределами моей организации.
Скажем, мой FeignClient выглядит так.
@FeignClient(name = "ThirdPartyClient", url = "https://api.thirdparty.com/", configuration = ThirdPartyConfiguration.class)
public interface ThirdPartyClient { ... }
Проблема в том, что этот сторонний клиент также просматривает список RequestInterceptors и получает тот же заголовок аутентификации, который используется между моими микросервисами. Я хотел бы обойти список RequestInterceptors по умолчанию, чтобы установить конкретный.
Я попытался переопределить конфигурацию по умолчанию, как описано в документе, мне удалось добавить конкретный RequestInterceptor, но все еще просматривал список, поэтому я получаю все заголовки в запросе.
@Configuration
public class ThirdPartyConfiguration {
@Bean
public RequestInterceptor requestInterceptor() {
return requestTemplate -> {
requestTemplate.header("Authorization", "HEADER_VALUE");
};
}
}
1 ответ
В глобальном RequestInterceptor вы можете обойти аутентификацию, проверив фиктивный URL-адрес клиента:
@Override
public void apply(RequestTemplate template) {
if (template.url().equals("/your_specific_url")) {
/*apply auth header*/
}
}