2011-08-02 112 views
5

我花了許多日夜嘗試找到可以連接到使用Negotiate/NTLM身份驗證的Microsoft Dynamics CRM的正確Java框架。我用各種HTTP協議處理程序在JAX-WS,Axis2,CXF上嘗試了所有關於Stackoverflow和其他資源的建議。沒有人按預期工作。目前最好的方法是Axis2/commons-httpclient-3.1,我可以用NTLM摘要跟蹤至少所有三個階段,但是目標IIS仍然拒絕401未授權的身份驗證。 Apache CXF--既有內置的Java6 NTLM支持,也有一些人建議作爲補救措施的jCIFS,因爲前者在第二次401響應失敗時無效(雖然它應該發送第三個請求,根據協議),後者嘗試從空輸入流讀取響應代碼並失敗。用於使用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認證碼只支持NTLM,而不支持更新的NTLMv2協議。我對這個問題的解決方案是使用commons-httpclient 3,並將NTLM身份驗證代碼替換爲支持NTLMv2的解決方案。幸運的是,NTLMv2規範是published by Microsoft。實施起來並不難,但當然這是你必須保持自己的東西,這可能是由於多種原因而不可取的。

+0

請檢查我的自我回答以上 –

0

我忘了這麼說,我自己也找到了解決方案。線索是用Jespa + jCIFS取代標準的Java協議棧,並用JAX-WS製作一些小補丁。

+3

您可以詳細說明上述解決方案嗎? – javamonkey79

相關問題