Camel http4和url编码的密码被解释为单独的参数

时间:2014-09-17 06:14:35

标签: url apache-camel ntlm

我们有一个Apache Camel(2.13.2)应用程序,它使用http4与网络服务器通信,使用NTLM进行身份验证。

端点定义为(伪):

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

只要pass变量包含“非特殊”字符,就可以正常工作。

但是,如果pass包含例如"abcd&def" - Camel将把&符号作为查询参数分隔符,就像它应该的那样。

但编码&符号的url(即"abcd%26def")完全没有区别?

我们仍然以Camel调用端点"http://thegreat.server.com/uri?authMethod=NTLM&def=",并使用截断的密码。

是否有一些明显的东西我们错过了,或者这看起来像一个bug?

感谢。

1 个答案:

答案 0 :(得分:4)

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

有一节介绍了密码,例如你应该使用RAW()语法。

所以它就像是

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