我想從IBM WebSphere中使用.Net WS。JAX-WS使用Active Directory驗證的IBM客戶端.Net WS(NTLM)
我創建了一個帶有JAX-WS IBM實現的WS客戶端,它在IIS上使用.Net WS。客戶端位於SUSE上,身份驗證通過NTLM與Windows Server 2003 Active Directory進行。
如果客戶端在命令行中執行,則實現調用java.net.Authenticator來獲取憑證,並且請求成功。
如果客戶端內RAD執行認證符不叫,也未能與401
如果客戶端在WebSphere執行認證符不調用,它失敗,401
如果我直接向.Net WS URL創建HttpConnection,則調用Authenticator,並且請求成功。
如果不是使用JAX-WS IBM實現,而是使用Axis2(直接而不是IBM Axis2 JAX-WS實現),那麼我可以向Axis2客戶端傳遞Authenticator對象,並且請求成功。這僅適用於Windows Server 2003的NTLM協議。遷移到Windows Server 2008時,身份驗證協議爲NTLMv2(由於NTLM的安全問題,每個人都轉移到NTLMv2),並且請求失敗,因爲HTTP客戶端3不支持NTLMv2。 X是Axis2的依賴關係。而且有一段時間他們不會遷移。
如果我使用IBM以外的JAX-WS的其他實現,我會鬆開控制檯管理和自動註釋讀取,再加上放棄IBM的支持。
問題
我不知道爲什麼RAD的裏面didn't工作,是由命令行的工作原理相同的程序。
如何讓JAX-WS IBM實現通過具有特定憑證的NTLMv2協議支持進行身份驗證? (java.net.Authenticator爲您提供這一點,它應該被稱爲...它不)
是否有任何方式使IBM JAX-WS實現使用另一個HTTP客戶端比標準的?
即使IBM JVM實現提供NTLM身份驗證(這就是爲什麼命令行和直接HttpConnection執行起作用的原因),所以我不明白他們爲什麼不將它用於IBM WS堆棧。
加點
是否有提供消費與ActiveDirectory的認證WS雙向能力沒有什麼好的辦法?
評論
春WS使用HttpClient的4.X支持NTLMv2的權威性,但我需要一個JAX-WS的實現,它應該是IBM之一。 IBM JAX-WS似乎只支持Basic AUTH。我不明白Microsoft WS互操作性對於IBM而言並不重要。
參考
身份驗證的conf:
https://stackoverflow.com/a/5994706/14811
提前感謝!
我不選擇去NTLMv2公司去。 WS-Security是傳輸協議上的一層。 NTLMv2在傳輸層工作,所以我無法使用WS-Security。 Kerberos是比NTLMv2更好的選擇,但它不允許通過DNS進行負載平衡,因爲它抵抗Man-In-The-Middle攻擊。在這種情況下,目標IP可能會發生變化。 NTLMv2是安全的,我們不需要Kerberos。 我使用Authenticator策略測試了一些WS堆棧(Axis2,IBM JAX-WS,Spring WS),所有這些都避免了它。但Authenticator doc說任何網絡訪問都應該在其中查找憑證。 –
關於Authenticator。我創建了一個設置Authenticator並調用WS的小程序。如果我在RAD內部運行這個程序,它會失敗,如果你從命令行運行它,它會調用Authenticator來獲取憑證並且工作正常。我不知道爲什麼。 –