1

I've been trying to use Apache Camel's Http4 component to connect to a HTTPS URL that needs Basic authentication. The connection needs to be done through an authenticated HTTP proxy.

So, according to the docs, I configure the Camel endpoint like this:

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

Which results in a 403 - Forbidden response from the target server. Looking through the org.apache.http.wire logs, it shows that the proxy credentials proxyUser / proxyPassword are forwarded to the target server instead of the intended myUser/myPassword in the Authorization header.

Debugging the source for CompositeHTTPConfigurer.configureHttpClient, ProxyHttpClientConfigurer.configureHttpClient and BasicAuthenticationHttpClientConfigurer.configureHttpClient, it seems that because both configurers are setting their credentials to the HttpClientBuilder by means of setDefaultCredentialsProvider, one of them is lost - gets overwritten - in the process.

Looks like it could be a bug in Camel's Http4 component? Or am I missing something?

This is Camel 2.18.2 with Spring Boot 1.5.1.RELEASE.

Xavi López
  • 27,550
  • 11
  • 97
  • 161

1 Answers1

1

After raising this question on the Apache Camel Users list, it seems the bug is confirmed.

I solved it using camel-http instead of camel-http4. Endpoint parameters needed a slight tweaking:

.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")
Xavi López
  • 27,550
  • 11
  • 97
  • 161