【发布时间】: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