2008-11-04 148 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

相关问题