2012-02-20 99 views
1

我有一個來自Web應用程序的Java EE Web應用程序我必須使用期望Kerberos/NTLM身份驗證的SharePoint Web服務我該如何實現。我正在使用CXF來使用Web服務,它使用Windows集成身份驗證進行身份驗證的Web應用程序。使用CXF與Kerberos/NTLM身份驗證從Java Webapp的SharePoint Webservice

+0

你想消費它使用Kerberos令牌資料1.1 Web服務意味着使用單點登錄? CXF支持[開箱即用](http://domagojtechtips.blogspot.com/2007/08/cxf-spring-and-ws-security-putting-it.html),您需要配置正確的[攔截器] (http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/KerberosTokenPolicyValidator.java?view=markup )。 – 2012-02-20 19:49:10

回答

2

看看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. 如果你運行你的web應用程序使用相同的標識SharePoint前端你可以重新發送同樣的道理到SharePoint。

  2. 如果您以不同的身份運行,您必須使用用戶的令牌轉到活動目錄並代表您的用戶請求Sharepoint服務的票證。你的web應用程序下運行的帳戶在Active Directory中

另外要受信任的委派,我不知道的SharePoint接受SOAP消息頭中的Kerberos標記,我相信你有使用HTTP標頭進行身份驗證。

This問題可以幫助你

如果你想上的功能使用當前用戶的身份來看看 here

+0

您提到的用於從Java桌面客戶端訪問的所有鏈接,但我的要求是我想從Web應用程序訪問Web服務。 Web服務的身份驗證憑證應該是Web應用程序用戶的憑證。有什麼方法可以在SOAP頭中附加kerberos標記嗎? – 2012-02-23 14:06:53

+0

我明白了。我編輯了回覆,以涵蓋WebApps – Vlad 2012-02-24 15:02:21

+0

感謝Vlad我們正在做的錯誤是在使用HTTP標頭工作後將標記添加到SOAP標頭。非常感謝 – 2012-03-04 13:40:34