【问题标题】:HTTP "Negotiate" authentication via NTLM from a Java SE6 client on Windows通过 NTLM 从 Windows 上的 Java SE6 客户端进行 HTTP“协商”身份验证
【发布时间】:2011-05-09 16:22:48
【问题描述】:

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

我的理解是,在 Windows 上运行的 Java 6 已经内置了对 SPNEGO 的支持,但是在无法进行 kerberos 身份验证的情况下,Java 实现似乎不会尝试 NTLM 身份验证。 Sun 文档中提供的 Authenticator 示例在响应服务器发送 WWW-Authenticate: Negotiate 时失败并出现 401 Unauthorized 错误。

这里是测试环境的描述:

目标服务器:

  • Windows 2008 R2 独立服务器(不属于 AD 域)
  • 使用 WCF 实现的 Microsoft SOAP 服务
  • 为 SPNEGO 身份验证配置 WCF(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。

【问题讨论】:

  • 您的问题解决了吗?
  • @David Brossard - 是的,我们确实让事情正常了。我们的解决方案需要注意的是,原生 Java 身份验证功能在作为 Windows 服务运行时会出现问题,除非使用服务帐户。最近,我们开始使用支持 NTLMv2 身份验证的 Apache HTTP 客户端。它需要一些技巧才能使其工作,但事实证明它在大量生产使用中是可靠的。
  • 谢谢!然后,我将研究 Apache 客户端。我的 tomcat 作为 Windows 服务运行,这很好

标签: java soap cxf ntlm spnego


【解决方案1】:

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

【讨论】:

  • 感谢您的回复。我得出了类似的结论——Java 的 SPNEGO 实现不提供对 NTLM 的支持。也就是说,Java 本身确实支持 NTLM/NTMLv2,但有一些小警告,至少在 Windows 平台上是这样。我相信其他平台存在 MS 许可问题。我目前有一个 CXF 客户端在生产环境中可靠地运行 NTLMv2,以针对 Dynamics Nav 2009 R2(基于 WCF 的服务器)。我更喜欢您建议的摘要身份验证,但 MS Nav 开发人员仅实现了对 SPENEGO 和 NTLMv2 的支持:( NTLM 支持仅在 2009 R2 中添加。
  • 你打错了吗?除非您使用第三方库,否则 Windows 中没有对 NTLM(v2) 的直接 Java 支持。
  • 不,我写的是正确的:“Java 的 SPNEGO 实现不提供对 NTLM 的支持”。 Windows 上的 Java 支持标准 MS NTLMv2 身份验证,但 Java SPENGO 实现仅支持 Kerberos。这意味着如果服务器使用 SPENGO(即 WWW-Authenticate: Negotiate),则 Java 客户端无法使用 NTLM 对 MS Web 服务器进行身份验证
  • Windows 上的 Java 如何支持带有 SPNEGO 的 NTLMv2?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 2014-08-18
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
相关资源
最近更新 更多