有人知道在Windows上运行的Java 6客户端是否能够在访问实现SPNEGO身份验证协议的Microsoft服务器时通过NTLM进行身份验证?
我的理解是,在Windows上运行的Java 6内置了对SPNEGO的支持,但似乎Java实现在kerberos身份验证不可能的情况下不会尝试NTLM身份验证。 Sun文档中提供的 Authenticator 示例在响应服务器发送 WWW-Authenticate:Negotiate 时出现 401 Unauthorized 错误失败
以下是测试环境的说明:
目标服务器:
客户端计算机:
最终目标是使用Apache CXF 2.4.0在WCF服务器上调用SOAP服务。在添加CXF和SOAP的复杂性之前,我一直在尝试使用简单的Java测试应用程序从服务器检索WSDL,以解决身份验证问题。
FWIW - 我可以使用Windows服务器的本地管理员登录从IE访问WCF服务器。我还能够创建一个没有任何特殊授权配置的Delphi XE SOAP客户端。 Delphi SOAP客户端使用WinInet。
答案 0 :(得分:2)
Java的SPNEGO只能使用Kerberos,因为NTLM是专有的传统MS技术。如果您的目标计算机不属于域名,就像您的情况一样,那么您运气不好。如果可以,您应该切换到DIGEST-MD5身份验证。