加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 02:22:01 所属栏目:Windows 来源:网络整理
导读:有没有人知道在 Windows上运行的 Java 6客户端是否能够在访问实现SPNEGO身份验证协议的Microsoft服务器时通过NTLM进行身份验证? 我的理解是,在Windows上运行的Java 6内置了对SPNEGO的支持,但似乎Java实现不会在无法进行kerberos身份验证的情况下尝试NTLM身
有没有人知道在 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身份验证.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读