骆驼HTTP4使用基本验证和代理验证



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

因此,根据文档,我将骆驼端点配置为这样:

.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.configureHttpClientProxyHttpClientConfigurer.configureHttpClientBasicAuthenticationHttpClientConfigurer.configureHttpClient的源,似乎由于两个配置者都通过setDefaultCredentialsProvider将其凭据设置为HttpClientBuilder,因此其中一个被丢失 - 在此过程中被覆盖 -

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

这是骆驼2.18.2,带有Spring Boot 1.5.1.Release。

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

相关内容

  • 没有找到相关文章

最新更新