1

我一直在尝试使用 Apache Camel 的 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 - Forbidden来自目标服务器的响应。查看org.apache.http.wire日志,它显示代理凭据proxyUser / proxyPassword被转发到目标服务器,而不是标头中的预期myUser / myPasswordAuthorization

调试 和 的源,CompositeHTTPConfigurer.configureHttpClient似乎因为两个配置器都将其凭据设置为by ,因此其中一个在此过程中丢失 - 被覆盖。ProxyHttpClientConfigurer.configureHttpClientBasicAuthenticationHttpClientConfigurer.configureHttpClientHttpClientBuildersetDefaultCredentialsProvider

看起来这可能是 Camel 的 Http4 组件中的错误?还是我错过了什么?

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

4

1 回答 1

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")
于 2017-03-07T15:13:04.677 回答