java - 来自 Java Web 应用程序的 SharePoint Web 服务使用 CXF 和 Kerberos/NTLM 身份验证

标签 java web-services sharepoint cxf kerberos

我有一个来自 Web 应用程序的 Java EE Web 应用程序,我必须使用需要 Kerberos/NTLM 身份验证的 SharePoint Web 服务,我该如何实现。我使用 CXF 来使用 Web 服务,并且它本身的 Web 应用程序使用 Windows 集成身份验证进行身份验证。

最佳答案

看一下 SPNEGO 协议(protocol),这是 Sharepoint(技术上是 IIS)用于单点登录身份验证的协议(protocol)。我不熟悉 CXF,但通常大多数 Web 服务平台都允许您根据请求提供附加 header 。基本上你需要的是:

1.  Get authentication token for the sharepoint from user session  

2.  Use JAAS to generate tokens.

看这里http://appliedcrypto.com/spnego/spnego_jaasclient.html在这里 http://docs.oracle.com/javase/6/docs/technotes/guides/security/jgss/lab/part6.html了解更多详情。

适用于您想要对共享点的浏览器用户进行身份验证的情况。您必须在您的网络应用程序中实现 SPNEGO 协议(protocol),例如您可以使用 this包你做吧。大多数现代应用程序服务器都支持 SPNEGO 协议(protocol) [JBoss、WebSphere]。实现 SPNEGO 协议(protocol)后,您可以从“Authorization” header 中获取 kerberos token 。

那么你有两个选择:

  1. 如果您使用与 SharePoint 前端相同的身份运行网络应用程序,您只需将相同的 token 重新发送到共享点即可。

  2. 如果您以不同的身份运行,则必须使用用户的 token 前往 Active Directory 并代表您的用户请求共享点服务的票证。您的网络应用程序所使用的帐户必须受到信任才能在 Active Directory 中进行委派

此外,我不确定 SharePoint 是否接受 SOAP header 中的 kerberos token ,我相信您必须使用 HTTP header 进行身份验证。

This这个问题可能对你有帮助

如果您想使用单点登录功能(即使用当前用户身份),请查看 here

关于java - 来自 Java Web 应用程序的 SharePoint Web 服务使用 CXF 和 Kerberos/NTLM 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9361840/

相关文章:

javascript - 如果我有 Javascript/CXF,我还需要 (Spring) MVC 吗?

sharepoint - 如何使用对象模型获取 SharePoint 版本

ASP.NET 正则表达式验证器无法在 Internet Explorer 7 上运行

java用井号而不是问号解析url

java - netbeans 中的 java 类路径在哪里?

jquery - 为什么 Web 服务返回数据为 msg.d

javascript - 使用 jquery 更新 Sharepoint 中的富文本列

java - 禁用在 ViewPager 中的某些 fragment 上滑动

Java REGEX XML 解析/缩减同时保持结构 HowTo

SharePoint 自定义 Web 服务消耗问题 - HTTP 401 : Unauthorized