2017-03-06 2 views
0

J'ai essayé d'utiliser le composant Http4 d'Apache Camel pour me connecter à une URL HTTPS nécessitant une authentification de base. La connexion doit être effectuée via un proxy HTTP authentifié.Camel Http4 utilisant l'authentification de base et le proxy auth

Ainsi, selon la docs, je configure le point final Camel comme ceci:

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

qui se traduit par une réponse 403 - Forbidden à partir du serveur cible. En regardant à travers les journaux org.apache.http.wire, il montre que les informations d'identification de proxy PROXYUSER/ proxyPassword sont redirigés vers le serveur cible au lieu du destiné myUser/ myPassword dans l'en-tête Authorization.

Débogage la source CompositeHTTPConfigurer.configureHttpClient, ProxyHttpClientConfigurer.configureHttpClient et BasicAuthenticationHttpClientConfigurer.configureHttpClient, il semble que parce que les deux configurers établissent leurs pouvoirs au HttpClientBuilder au moyen setDefaultCredentialsProvider, l'un d'entre eux est perdu - ces fichiers sont écrasés - dans le processus.

On dirait que cela pourrait être un bug dans le composant Http4 de Camel? Ou est-ce que je manque quelque chose?

Ceci est Camel 2.18.2 avec Spring Boot 1.5.1.RELEASE.

Répondre

1

Après avoir soulevé cette question sur le Apache Camel Users list, il semble que le bug est confirmé. J'ai résolu le problème avec camel-http au lieu de camel-http4. Les paramètres du point de terminaison nécessitaient un léger ajustement:

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