2011-12-14 13 views
3

私が使用しているC#サービスエンドポイントへの作業中のミュールがあります。Mule ESBのWindows資格情報を使用するCXFエンドポイント

サービスはWCF/C#でホストされています - muleはapache cxf(Wsdl2java)によって生成されたクラスのセットを使用してそのサービスにクライアントをオープンしています。 しかし、これまで私が使っていたのはサービス上のbasichttpbindingです。つまり、セキュリティ/資格情報の検証はありません。

今、私はそれを変更したいと思います。私は、WSHttpBindingにc#サービスのバインディングを設定したいと思います。

NTLM資格情報を使用してC#サービスを使用する方法はありますか? ApacheのCXFのドキュメントから

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

現在のエンドポイントは次のように定義されて

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の上記でこれらの項目を定義することができます?そのような例は見当たりませんでした....

セキュリティーなしで接続をセットアップしようとしても、addtionaly(セキュリティーなしのWSHttpBinding =なし) - コンテンツタイプが一致しないようにするapplication/xmlで、それはtext/xmlなどのようなものです)

これをどうやって行うのか、私は本当にいくつかの例が好きです。

ありがとうございました!

+0

この記事をお読みください? http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html#ClientHTTPTransport%28includingSSLsupport%29-NTLMAuthentication –

+0

私は一見を持っていましたが、実装方法はまだまだありません。 ) – Menyh

答えて

0

私はあなたができると確信しています。私は最近、Muleに成功なしにKerberos認証を使用してMicrosoft(Dynamics 2011)Webサービスと話をさせようとしました。これは、MuleがCXF 2.3.1を使用していることが原因であると信じています。これは、この形式の認証をサポートしていません。解決策または回避策についてMulesoftに連絡する際

は、私はこの応答を得た:

私たちは、Kerberos認証をサポートしていない、とCXF 2.5.0にアップグレードするための方法、私たちの問題を解決しないだろうこのライブラリを使用しています。唯一の解決策は、これを処理するためにHttpトランスポートの機能を拡張することです。

私たちの解決策は、MuleがJMS経由で通信する別個のCXF 2.5.0アダプタを用意することです。

+0

これをどうやって行うかについて、あなたが実際に実行している実例がありますか?このすべてにかなり新しい。 – Menyh

+0

mule-jms-cxf-adapterソリューションを参照していますか? –

+0

そうです、まさにそうです。 – Menyh

関連する問題