2011-01-13 20 views
2

NTLM認証が必要なhttpプロキシサーバーでAxis2(Version 1.4)クライアントを認証する正しい方法は何ですか?Axis2 Proxy-ServerのNTLM認証

(末尾の詳細を参照してください)私は、プロキシの資格情報を提供するために、次のコードを使用していますが、認証はまだ失敗:

Options options = serviceStub._getServiceClient().getOptions(); 
options.setProperty(HTTPConstants.CHUNKED, false); 
options.setProperty(HTTPConstants.PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_10); 

ProxyProperties proxyProperties = new ProxyProperties(); 
proxyProperties.setProxyName("123.123.123.123"); 
proxyProperties.setProxyPort(8080); 
proxyProperties.setUserName("[email protected]"); 
proxyProperties.setPassWord("1234"); 
proxyProperties.setDomain(""); 
options.setProperty(HTTPConstants.PROXY, proxyProperties); 

なFirefoxがあるとまったく同じ資格情報、ウェブブラウザ、でプロキシをトラフすることができるので、プロキシサーバーが正しく設定されていると仮定します。ただし、Axis2クライアントでは、認証に失敗します(HTTPステータスコードは「407 Proxy Authentication Required」)。

詳細: 私はネットワークスニファを使用してfirefoxと私のクライアントからのネットワークトラフィックを比較しました。主な違いは、axis2クライアントがntlmチャレンジに対して空の応答を送信していることです。

NTLMを使用しているHTTPプロキシサーバーで誰かが正常に認証されていますか?コード例を教えてもらえますか?

+0

http://stackoverflow.com/questions/916820/how-can-i-get-jcifs-to-play-nicely-with-apache-axis/1531406#1531406 – struhtanov

答えて

1

この問題は(Axis 2で)解決できませんでした。厳しいAxis2でこれを責めたくはありません。たぶん私は間違ったことをしましたが、何時間も試して、デバッグして、ドキュメントを読んでも、それを理解できませんでした。

しかし、私がオプションを使い果たしたとき、私は他のオプションを見なければなりませんでした。この他のオプションは、代替SOAPフレームワークの形で提供されました。 Java用のSOAPフレームワークはかなり存在します。私はAxis2、CXF、JAX-WSについて知っています。

私は現在、Axis2の代わりにJAX-WSを使用しています。フレームワークを置き換えることは簡単なプロセスでした。置き換えの素晴らしい副作用は、私が巨大な依存ツリーを取り除いたことです、Axis2が付属しています。 JAX-WSはJ6EEの一部なので、他の依存関係をインポートする必要はありませんでした。

現時点では、クライアント側でのみ交換しました。サーバーは引き続きAxis2を使用します。この組み合わせはこれまでのところうまくいきますが、私はまだサーバー側でAxis2を置き換える予定です。

すべて:Axis2の特別な機能を使用しない場合は、JAX-WSが最適です。