使用基本身份验证和代理身份验证的 Camel Http4
Camel Http4 using basic auth and proxy auth
我一直在尝试使用 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 在Authorization
header.
调试 CompositeHTTPConfigurer.configureHttpClient
, ProxyHttpClientConfigurer.configureHttpClient
and BasicAuthenticationHttpClientConfigurer.configureHttpClient
的源代码,似乎因为两个配置器都通过 setDefaultCredentialsProvider
将其凭据设置为 HttpClientBuilder
,其中一个丢失 - 被覆盖 -正在处理中。
看起来这可能是 Camel 的 Http4 组件中的错误?还是我遗漏了什么?
这是带有 Spring Boot 1.5 的 Camel 2.18.2。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")
我一直在尝试使用 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 在Authorization
header.
调试 CompositeHTTPConfigurer.configureHttpClient
, ProxyHttpClientConfigurer.configureHttpClient
and BasicAuthenticationHttpClientConfigurer.configureHttpClient
的源代码,似乎因为两个配置器都通过 setDefaultCredentialsProvider
将其凭据设置为 HttpClientBuilder
,其中一个丢失 - 被覆盖 -正在处理中。
看起来这可能是 Camel 的 Http4 组件中的错误?还是我遗漏了什么?
这是带有 Spring Boot 1.5 的 Camel 2.18.2。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")