HTTP“协商”从 Windows 上的 Java SE6 客户端通过 NTLM 进行身份验证

发布于 2024-11-05 15:47:21 字数 1015 浏览 1 评论 0原文

有谁知道在 Windows 上运行的 Java 6 客户端在访问实现 SPNEGO 身份验证协议的 Microsoft 服务器时是否能够通过 NTLM 进行身份验证?

我的理解是,在 Windows 上运行的 Java 6 内置了对 SPNEGO 的支持,但在无法进行 kerberos 身份验证的情况下,Java 实现似乎不会尝试 NTLM 身份验证。 身份验证器 示例失败,并在响应服务器发送 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 SOAP 客户端。 WinInet 的底层。

Does anyone know if a Java 6 client running on Windows is able to authenticate via NTLM when accessing a Microsoft server that implements the SPNEGO authentication protocol?

My understanding is that Java 6 running on Windows has built-in support for SPNEGO, but it seems that the Java implementation does not attempt NTLM authentication in the event kerberos authentication is not possible. The Authenticator example provided in the Sun docs fails with a 401 Unauthorized error in response to the server sending WWW-Authenticate: Negotiate.

Here is a description of the test environment:

Target Server:

  • Windows 2008 R2 standalone server (not part of AD domain)
  • Microsoft SOAP service implemented using WCF
  • WCF is configured for SPNEGO authentication (kerberos and NTLM)
  • WCF server cannot be reconfigured to support other auth modes :(

Client Machine:

  • Windows 7 64-bit standalone workstation (not part of a domain)
  • Java SE6 client running the Sun SPNEGO example

The ultimate goal is to use Apache CXF 2.4.0 to invoke SOAP services on the WCF server. Before adding in the complexities of CXF and SOAP I have been trying to retrieve the WSDL from the server using a simple Java test application to work out the authentication issues.

FWIW - I can access the WCF server from IE using the local Administrator login for the Windows server. I have also been able to create a Delphi XE SOAP client without any special authorization configuration. The Delphi SOAP client uses WinInet under the hood.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

多彩岁月 2024-11-12 15:47:21

Java 的 SPNEGO 能够支持 Kerberos,只是因为 NTLM 是一种专有的遗留 MS 技术。如果您的目标计算机不是域的一部分(就像您的情况一样),那么您就不走运了。如果可以的话,您应该切换到 DIGEST-MD5 身份验证。

Java's SPNEGO is capable of Kerberos only because NTLM is a proprietary legacy MS technology. If your target machine is not part of a domain, as it is in your case, your are out of luck. You should switch to DIGEST-MD5 authentication if you can.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文