gpt4 book ai didi

在 Mule ESB 中使用 Windows 凭证的 CXF 端点

转载 作者:行者123 更新时间:2023-12-02 16:13:13 28 4
gpt4 key购买 nike

我有一个工作骡子到我使用的 C# 服务端点。

服务托管在 WCF/C# 上 - mule 使用 apache cxf (Wsdl2java) 生成的一组类打开该服务的客户端。然而,到目前为止,我使用的只是服务上的 basichttp 绑定(bind) - 这意味着没有安全/凭据验证。

现在 - 我想改变这一点。我想将 c# 服务的绑定(bind)设置为 WSHttpBinding。

有没有办法可以使用 NTLM 凭据使用 C# 服务?

当前端点定义为:

<cxf:jaxws-client serviceClass="com.TimeLineListener.IBusListeningService" 
operation="getMessage" />
<outbound-endpoint address="${TMSService.host}"
exchange-pattern="one-way" />

来自 Apache CXF 的文档:

NTLM 身份验证

 //Set the jcifs properties
jcifs.Config.setProperty("jcifs.smb.client.domain", "ben.com");
jcifs.Config.setProperty("jcifs.netbios.wins", "xxx.xxx.xxx.xxx");
jcifs.Config.setProperty("jcifs.smb.client.soTimeout", "300000"); //5
minutes
jcifs.Config.setProperty("jcifs.netbios.cachePolicy", "1200"); //20 minutes
//jcifs.Config.setProperty("jcifs.smb.client.username", "myNTLogin");
//jcifs.Config.setProperty("jcifs.smb.client.password", "secret");

//Register the jcifs URL handler to enable NTLM
jcifs.Config.registerSmbURLHandler();

Finally, you need to setup the CXF client to turn off chunking. The reason is that the NTLM authentication requires a 3 part handshake which breaks the streaming.

//Turn off chunking so that NTLM can occur
Client client = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setAllowChunking(false);
http.setClient(httpClientPolicy);

那么,我如何在上面的 XML 中定义这些项目???我还没有见过任何这样的例子......

此外,即使我尝试在没有安全性的情况下设置连接(WSHttpBinding with Security =none) - 我仍然无法使其工作,因为内容类型不匹配(假设是 application/xml 而它是 text/xml或类似的东西)

我真的很想要一些关于如何实现这一点的例子。

再次感谢!

最佳答案

我不确定你可以。我最近尝试让 Mule 使用 Kerberos 身份验证与 Microsoft (Dynamics 2011) Web 服务进行通信,但没有成功。我相信这是因为 Mule 使用 CXF 2.3.1,它不支持这种形式的身份验证。

在联系 Mulesoft 寻求解决方案或解决方法后,我得到了以下回复:

We do not support Kerberos authentication, and upgrading to cxf 2.5.0 wouldn't fix the problem because of the way we are using this library. The only solution would be to extend the functionality of the Http transort to handle this.

我们现在的解决方案是拥有一个单独的 CXF 2.5.0 适配器,Mule 通过 JMS 与之通信。

关于在 Mule ESB 中使用 Windows 凭证的 CXF 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8503900/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com