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")
Другие вопросы по тегам