2008-11-04 141 views
3

我在SharePoint 2007託管一個ASP.NET Web應用程序框,它使Web服務調用Sharepoint以檢索文檔位置(特別是GetListItems方法)。Sharepoint 2007 NTLM問題與ASP.NET Web應用程序託管在Sharepoint服務器上

該服務與使用適當權限的有效Sharepoint帳戶的憑證一起使用。

ListServiceWrapper listService = new ListServiceWrapper(); 

/*Pass credentials to service call object*/ 
listService.Credentials = new NetworkCredential(spUserName, spPassword, spDomain); 

/*Set the Url property of the service for the path to a subsite.*/ 
listService.Url = ConfigurationManager.AppSettings.Get("rootSite") + "/_vti_bin/lists.asmx"; 

當Web應用程序在我的開發框(我是同一個域上的Sharepoint用戶)本地運行時,該服務調用效果很好。當部署到Sharepoint框時,應用程序返回:

請求失敗,HTTP狀態爲 401:未經授權。

我們嘗試將Sharepoint框中的Web應用程序的App Pool用戶更改爲授權的Sharepoint用戶,但仍然沒有任何運氣。我想,如果我們將Sharepoint身份驗證更改爲Kerberos而不是NTLM,它會解決問題。不幸的是,這不是一個選項。這可能與NLTM雙跳問題有關?

回答

3

是的,這與雙跳問題有關。
在NTLM中,您不允許對遠程服務進行身份驗證。如您所說,您需要Kerberos將憑據委託給其他服務。

選項,你可以嘗試:

  • 切換到Kerberos的。這是唯一正確的解決方案,但這並不容易,因爲您必須創建所有SPN並確保端口88處於打開狀態。
  • 安裝你正在ASP框中的ASP.Net應用程序,並激活DisableLoopbackCheck
  • 使用服務帳戶登錄到SharePoint。在這種情況下,SharePoint不會在用戶帳戶下運行,因此您必須自己處理安全性
+0

DisableLoopbackCheck的工作方式與魅力類似。我對Google Analytics(分析)框中可能導致的問題做了一些調查(谷歌),但找不到任何問題。 真的很感謝答案,有一個很好的答案。 – 2008-11-04 21:34:16

相關問題