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

时间:2017-03-06 15:54:02

标签: java apache-camel proxy-authentication camel-http

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

所以,根据docs,我像这样配置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

调试CompositeHTTPConfigurer.configureHttpClientProxyHttpClientConfigurer.configureHttpClientBasicAuthenticationHttpClientConfigurer.configureHttpClient的来源,似乎是因为两个配置器都通过Authorization将凭据设置为HttpClientBuilder ,其中一个丢失 - 被覆盖 - 在此过程中。

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

这是带有Spring Boot 1.5.1.RELEASE的Camel 2.18.2。

1 个答案:

答案 0 :(得分:1)

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