【问题标题】:Sharepoint 2007 NTLM issue with ASP.NET Web App hosted on Sharepoint serverSharepoint 2007 NTLM 问题与托管在 Sharepoint 服务器上的 ASP.NET Web 应用程序
【发布时间】:2010-09-20 17:14:22
【问题描述】:

我在 Sharepoint 2007 机器上托管一个 ASP.NET Web 应用程序,该应用程序对 Sharepoint 进行 Web 服务调用以检索文档位置(特别是 GetListItems 方法)。

使用具有适当权限的有效 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 双跳问题有关?

【问题讨论】:

    标签: .net sharepoint ntlm


    【解决方案1】:

    是的,这与双跳问题有关。
    在 NTLM 中,不允许您对远程服务进行身份验证。正如您所说,您需要 Kerberos 将凭据委派给其他服务。

    您可以尝试的选项:

    • 切换到 Kerberos。这是唯一正确的解决方案,但它并不容易,因为您必须创建所有 SPN 并确保端口 88 已打开。
    • 在 SharePoint 框中安装您的 ASP.Net 应用程序并激活 DisableLoopbackCheck
    • 使用服务帐户登录 SharePoint。在这种情况下,SharePoint 不会在用户帐户下运行,因此您必须自己处理安全问题

    【讨论】:

    • DisableLoopbackCheck 就像一个魅力。我做了一些研究(谷歌)关于它可能会在 Sharepoint 盒子上引起什么问题,但找不到任何问题。真的很感谢你的答案,祝你好。
    猜你喜欢
    • 1970-01-01
    • 2014-07-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多