2011-01-13 88 views
2

什麼是需要NTLM身份驗證HTTP代理服務器進行身份驗證一個Axis2(1.4版)的客戶端的正確方法是什麼?Axis2的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); 

完全一樣的憑據,web瀏覽器,如Firefox是能夠通過代理,所以我假設,代理服務器已正確設置。但是,使用Axis2客戶端時,身份驗證失敗(HTTP狀態代碼爲「407代理身份驗證必需」)。

進一步瞭解詳細: 我使用網絡嗅探器相比,從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是更好的選擇。