Обойти глобальный список 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*/
   }
}
Другие вопросы по тегам