2011-08-02 26 views
5

私は、Negotiate/NTLM認証を使用するMicrosoft Dynamics CRMに接続できる適切なJavaフレームワークを見つけようと多くの時間を費やしました。私は、JAX-WS、Axis2、CXFで様々なHTTPプロトコルハンドラを使ってStackoverflowや他のリソースに関する既存の提案をすべて試してみました。彼らの誰も期待どおりに働いていませんでした。最善のアプローチは、Axis2/commons-httpclient-3.1です。ここでは、NTLMダイジェストで少なくとも3つのフェーズすべてをトレースできますが、ターゲットIISはまだ401 Unauthorizedで認証を拒否します。 Apache CXF - Java6のNTLMサポートとjCIFSの両方をサポートしている人もいますが、これは2番目の401応答で失敗するためです(3番目のリクエストを送信していたはずですが、プロトコル)、後者は空の入力ストリームから応答コードを読み取ろうとし、失敗します。NTLM認証を使用したSOAP WebサービスのJavaクライアント

Java 6プラットフォームから誰かがNTLMで保護されたSOAP Webサービスをマスターすることに成功したかどうかです。

+0

を参照してください。KerberosプロファイルのサポートはCXFにする必要があります(['KerberosTokenPolicyValidator'](http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/orgを参照)。 /apache/cxf/ws/security/wss4j/policyvalidators/KerberosTokenPolicyValidator.java?view=markup&pathrev=1149227))。それ以外の場合は、[wss4j-kerberos](http://wss4j-kerberos.svn.sourceforge.net/viewvc/wss4j-kerberos/trunk/src/org/apache/ws/security/processor/KerberosTicketProcessor.java?revision=HEAD&view=マークアップ)プロジェクト。 –

+0

こんにちは!あなたはそれを解決しましたか? –

+0

はい。 http://stackoverflow.com/a/7274388/802831 –

答えて

1

この分野に関する私の知識は数年前であり、おそらく最高のアドバイスではないと思います。特に、私はcommons-httpclient 3しか扱っていませんでした。新しいパッケージNTLM/NTLMv2を正しく実行することを約束します。

おそらく気付いたことがあるように、commons-httpclient 3のNTLM認証コードは、新しいNTLMv2プロトコルではなく、NTLMだけをサポートしています。この問題に対する私の解決策は、commons-httpclient 3を使用し、NTLM認証コードをNTLMv2対応ソリューションに置き換えることでした。幸いにも、NTLMv2の仕様はpublished by Microsoftです。正直言って、実装するのは難しいことではありませんが、今はあなた自身が維持しなければならないことがあります。それは、いくつかの理由で望ましくないかもしれません。

+0

を参照してください。自分の自己回答を確認してください。 –

0

私は自分自身で解決策を見つけたと忘れています。この手掛かりは、標準のJavaプロトコルスタックをJespa + jCIFSに置き換え、JAX-WSで動作させるためにマイナーパッチを適用することです。

+3

上記の解決策を詳しく説明できますか? – javamonkey79

関連する問題