Camel http4 and url-encoded passwords being interpreted as separate arguments

jhb*_*ges 5 url ntlm apache-camel

We've got an Apache Camel (2.13.2) app that uses http4 to communicate with a webserver, using NTLM for auth.

The endpoint is defined as (pseudo):

...
.to("http4://thegreat.server.com/uri?authUsername=" + user + "&authPassword=" + pass 
   + "&authenticationPreemptive=true&authMethod=NTLM&authDomain=DOMAIN&authHost=host")
.to("otherEndpoint");
Run Code Online (Sandbox Code Playgroud)

This works well as long as the pass variable contains "non-special" chars.

但是,pass例如,如果包含"abcd&def"-骆驼将按其解释,将&符解释为查询参数分隔符。

但是,对与符号(即"abcd%26def")进行编码的网址完全没有区别吗?

最后,骆驼"http://thegreat.server.com/uri?authMethod=NTLM&def="使用截断的密码调用端点。

是否有我们显然遗漏的东西,还是这种看起来像是错误?

谢谢。

Cla*_*sen 5

请参阅Camel文档如何配置端点uris

有一节涵盖了有关密码的部分,例如,您应该使用RAW()语法。

所以这有点像

.to("http4://thegreat.server.com/uri?authUsername=" + user + "&authPassword=RAW(" + pass 
   + ")&authenticationPreemptive=true&authMethod=NTLM&authDomain=DOMAIN&authHost=host")
.to("otherEndpoint");
Run Code Online (Sandbox Code Playgroud)