【问题标题】:SharePoint Webservice from Java Webapp using CXF with Kerberos/NTLM authentication来自 Java Webapp 的 SharePoint Webservice 使用 CXF 和 Kerberos/NTLM 身份验证
【发布时间】:2012-02-20 13:21:09
【问题描述】:

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

【问题讨论】:

  • 您想使用使用 Kerberos Token Profile 1.1 的 Web 服务吗? CXF支持这个out of the box,需要配置正确的interceptor

标签: java web-services sharepoint cxf kerberos


【解决方案1】:

看看 SPNEGO 协议,这就是 Sharepoint(技术上是 IIS)用于单点登录身份验证的。我不熟悉 CXF,但通常大多数 WebServices 平台都允许您在请求中提供额外的标头。基本上你需要的是:

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 了解更多详情。

适用于您想要向共享点验证浏览器用户的情况。您必须在您的 Web 应用程序中实现 SPNEGO 协议,例如您可以使用 this 包来完成它。大多数现代应用服务器都支持 SPNEGO 协议 [JBoss, WebSphere]。实现 SPNEGO 协议后,您可以从“授权”标头中获取 kerberos 令牌。

那么你有两个选择:

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

  2. 如果您以不同的身份运行,您必须使用用户的令牌进入活动目录并代表您的用户请求共享点服务的票证。运行您的网络应用的帐户必须受信任才能在 Active Directory 中进行委派

另外,我不确定 SharePoint 是否接受 SOAP 标头中的 kerberos 令牌,我相信您必须使用 HTTP 标头进行身份验证。

This问题可能对你有帮助

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

【讨论】:

  • 您提到的所有从 Java 桌面客户端访问的链接,但我的要求是我想从 Web 应用程序访问 Web 服务。 Web 服务的身份验证凭据应该是 Web 应用程序用户的凭据。有没有办法在 SOAP 标头中附加 kerberos 令牌?
  • 感谢弗拉德,我们所做的错误是在使用 HTTP 标头后将令牌添加到 SOAP 标头中。非常感谢
猜你喜欢
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
相关资源
最近更新 更多