【问题标题】:C# SharePoint 2013 CSOM multi-authenticationC# SharePoint 2013 CSOM 多身份验证
【发布时间】:2014-10-03 14:23:20
【问题描述】:

我们有我们的本地 SharePoint2013,它启用了多种身份验证方法(NTLM 和 FBA)。

现在,当我尝试使用 CSOM 对此服务器进行身份验证并尝试获取列表时,服务器返回:“访问被拒绝。您无权执行此操作或访问此资源。”虽然我有拥有权限(拥有完全控制权和所需的一切),SharePoint 为我提供了 FedAuth cookie。用提琴手检查了请求,似乎 CSOM 无法访问 client.svc 服务,即使它已启动并运行?代码示例:

using System;
using System.Net;
using System.Security;
using SP = Microsoft.SharePoint.Client;

namespace TestConsoleTemp
{
public class Program
{
  static void Main(string[] args)
  {
        using (SP.ClientContext context = new SP.ClientContext("https://mywebsite.com"))
        {
            var cc = new CredentialCache();
            var passWord = new SecureString();
            foreach (char c in "password".ToCharArray()) passWord.AppendChar(c);
            cc.Add(new Uri("https://myportal.sis.lt"), "NTLM", new NetworkCredential("username", passWord, "domain"));
            context.Credentials = cc;
            context.ExecutingWebRequest += new EventHandler<SP.WebRequestEventArgs>(clientContext_ExecutingWebRequest);
            var list = context.Web.Lists.GetByTitle("listName");
            context.Load(list);
            context.ExecuteQuery();
        }
    }
    static void clientContext_ExecutingWebRequest(object sender, SP.WebRequestEventArgs e)
    {
        e.WebRequestExecutor.WebRequest.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
    } 
  }
}

即使不添加标头,相同的代码也适用于我们只有 NTLM 身份验证或云 (Office365) 的其他服务器。

有人能解释一下为什么在启用 NTLM 和 FBA 时 CSOM 不起作用吗?

【问题讨论】:

    标签: c# authentication sharepoint ntlm csom


    【解决方案1】:

    我们遇到了同样的问题,对我们来说,它与登录页面和身份验证有关,如果您使用的是自定义登录页面,请按照here 中描述的步骤操作以使 CSOM 正常工作。如果您没有使用自定义登录页面,您仍然可以使用 SharePoint 默认登录页面尝试相同的活动。

    以下是相关代码:

    context.ExecutingWebRequest += new EventHandler<WebRequestEventArgs>((obj, e) => {
        e.WebRequestExecutor.WebRequest.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");   
    });
    

    当您在启用了 FBA 的网站集上使用网络凭据时,您必须明确告诉身份验证方法不要使用带有该标头 X-FORMS_BASED_AUTH_ACCEPTED 的基于表单的身份验证。

    另见:https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/hh124553(v=office.14)?redirectedfrom=MSDN

    【讨论】:

    • 我们确实有一个自定义登录页面,只是想知道是否可以在不修改 SharePoint 网站本身的情况下进行身份验证,因为如果您正在为客户开发并且无法控制,则并非总是可以这样做。
    • 我也想为我的 SharePoint 网站提供相同的功能,但是 CSOM 无法访问 15 hives 文件夹中的登录页面,因此出现了错误。我确实找到了这个article,但还没有在我的系统上尝试过。可能对你有帮助。
    猜你喜欢
    • 2017-12-16
    • 2023-04-03
    • 2017-08-06
    • 2015-07-22
    • 2010-11-07
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多