Camel Http4 с использованием базовой аутентификации и прокси-аутентификации
Я пытался использовать Http4-компонент Apache Camel для подключения к URL-адресу HTTPS, который требует обычной проверки подлинности. Соединение должно быть сделано через аутентифицированный прокси HTTP.
Итак, в соответствии с документами, я настраиваю конечную точку Camel следующим образом:
.toD("https4://target.host/resource?
bridgeEndpoint=true
&mapHttpMessageBody=false
&proxyAuthHost=my.proxy.host
&proxyAuthPort=myProxyPort
&proxyAuthUsername=proxyUser
&proxyAuthPassword=proxyPassword
&proxyAuthScheme=http4
&authenticationPreemptive=true
&authUsername=myUser
&authPassword=myPassword")
Что приводит к 403 - Forbidden
ответ от целевого сервера. Глядя через org.apache.http.wire
журналы, это показывает, что учетные данные прокси proxyUser / proxyPassword пересылаются на целевой сервер вместо предполагаемого myUser / myPassword в Authorization
заголовок.
Отладка источника для CompositeHTTPConfigurer.configureHttpClient
, ProxyHttpClientConfigurer.configureHttpClient
а также BasicAuthenticationHttpClientConfigurer.configureHttpClient
Похоже, что поскольку оба конфигуратора устанавливают свои учетные данные на HttpClientBuilder
посредством setDefaultCredentialsProvider
один из них потерян - перезаписан - в процессе.
Похоже, это может быть ошибка в компоненте Camel Http4? Или я что-то упустил?
Это Camel 2.18.2 с Spring Boot 1.5.1.RELEASE.
1 ответ
После поднятия этого вопроса в списке пользователей Apache Camel, похоже, ошибка подтверждена.
Я решил это используя camel-http
вместо camel-http4
, Параметры конечной точки требуют небольшой настройки:
.toD("https://target.host/resource?
bridgeEndpoint=true
&proxyHost=my.proxy.host
&proxyPort=myProxyPort
&proxyAuthUsername=proxyUser
&proxyAuthPassword=proxyPassword
&proxyAuthMethod=Basic
&authUsername=myUser
&authPassword=myPassword
&authMethod=Basic
&httpClient.authenticationPreemptive=true")