Java 使用基本身份验证和代理身份验证的Camel Http4

Java 使用基本身份验证和代理身份验证的Camel Http4,java,apache-camel,proxy-authentication,camel-http,Java,Apache Camel,Proxy Authentication,Camel Http,我一直在尝试使用ApacheCamel的Http4组件连接到需要基本身份验证的HTTPS URL。连接需要通过经过身份验证的HTTP代理完成 因此,根据,我将Camel端点配置为: .toD("https4://target.host/resource? bridgeEndpoint=true &mapHttpMessageBody=false &proxyAuthHost=my.proxy.host &p

我一直在尝试使用ApacheCamel的Http4组件连接到需要基本身份验证的HTTPS URL。连接需要通过经过身份验证的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禁止响应。查看org.apache.http.wire日志,它显示代理凭据proxyUser/proxyPassword被转发到目标服务器,而不是授权标头中的预期myUser/myPassword

调试和的源代码似乎是因为两个配置程序都通过setDefaultCredentialsProvider将其凭据设置为HttpClientBuilder,因此其中一个凭据在过程中丢失-被覆盖

看起来可能是Camel的Http4组件中的一个bug?还是我遗漏了什么


这是Camel 2.18.2和Spring Boot 1.5.1。发布。

在上提出此问题后,错误似乎已得到确认

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