使用基本身份验证和代理身份验证的骆驼Http

问题描述:

我一直试图使用Apache Camel的Http4组件连接到需要基本身份验证的HTTPS URL。连接需要通过经过身份验证的HTTP代理完成。使用基本身份验证和代理身份验证的骆驼Http

因此,根据docs,我配置骆驼端点这样的:

.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/的MYPASSWORDAuthorization头。

调试为CompositeHTTPConfigurer.configureHttpClientProxyHttpClientConfigurer.configureHttpClientBasicAuthenticationHttpClientConfigurer.configureHttpClient源,似乎因为这两个configurers被机构将其证书的HttpClientBuildersetDefaultCredentialsProvider,其中之一丢失 - 被覆盖 - 在这个过程中。

看起来它可能是骆驼的Http4组件中的错误?或者我错过了什么?

这是Camel 2.18.2与Spring Boot 1.5.1.RELEASE。

Apache Camel Users list上提出这个问题后,似乎该错误得到了证实。

我使用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")