0
我们有自己的内部部署SharePoint2013,它有多种认证方法启用(NTLM和FBA)。C#的SharePoint 2013 CSOM多认证
现在,当我尝试使用CSOM对此服务器进行身份验证并尝试获取List时,服务器将返回:“访问被拒绝,您无权执行此操作或访问此资源。有权限(拥有完全控制权和所需的任何权限),SharePoint为我提供了FedAuth Cookie。使用fiddler检出请求,看起来像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不起作用?
我们有一个自定义的登录页面,只是想知道如果有可能,而无需修改SharePoint站点本身进行身份验证,因为它并不总是能够做到这一点的情况下,你正在开发一个客户端,并没有控制它。 – PsMaster 2014-11-03 08:55:18
我也想为我的SharePoint网站相同,但CSOM是无法访问登录页面在15荨麻疹文件夹,因此错误。我没有找到这个[文章](http://blogs.msdn.com/b/sridhara/archive/2014/02/06/sharepoint-2013-csom-call-from-web-part-fails-with-401- for-all-users.aspx),但还没有在我的系统上尝试过。可能会帮助你。 – Godwin 2014-11-03 12:56:38