簡體   English   中英

通過NTLM從Windows上的Java SE6客戶端進行HTTP“協商”身份驗證

[英]HTTP “Negotiate” authentication via NTLM from a Java SE6 client on Windows

有沒有人知道在Windows上運行的Java 6客戶端是否能夠在訪問實現SPNEGO身份驗證協議的Microsoft服務器時通過NTLM進行身份驗證?

我的理解是,在Windows上運行的Java 6內置了對SPNEGO的支持,但似乎Java實現在kerberos身份驗證不可能的情況下不會嘗試NTLM身份驗證。 Sun文檔中提供的Authenticator示例在響應服務器發送WWW-Authenticate:Negotiate時發生401 Unauthorized錯誤失敗。

以下是測試環境的說明:

目標服務器:

  • Windows 2008 R2獨立服務器(不屬於AD域)
  • 使用WCF實現的Microsoft SOAP服務
  • WCF配置為SPNEGO身份驗證(kerberos和NTLM)
  • 無法重新配置WCF服務器以支持其他身份驗證模式:(

客戶端機器:

  • Windows 7 64位獨立工作站(不屬於域)
  • 運行Sun SPNEGO示例的Java SE6客戶端

最終目標是使用Apache CXF 2.4.0在WCF服務器上調用SOAP服務。 在添加CXF和SOAP的復雜性之前,我一直在嘗試使用簡單的Java測試應用程序從服務器檢索WSDL來解決身份驗證問題。

FWIW - 我可以使用Windows服務器的本地管理員登錄從IE訪問WCF服務器。 我還能夠創建一個沒有任何特殊授權配置的Delphi XE SOAP客戶端。 Delphi SOAP客戶端使用WinInet。

Java的SPNEGO只能使用Kerberos,因為NTLM是專有的傳統MS技術。 如果您的目標計算機不屬於域名,就像您的情況一樣,那么您運氣不好。 如果可以,您應該切換到DIGEST-MD5身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM