2014-10-03 7 views
0

У нас есть локальный SharePoint2013, и он включает несколько методов проверки подлинности (NTLM и FBA).C# SharePoint 2013 CSOM multi-authentication

Теперь, когда я пытаюсь выполнить аутентификацию на этом сервере с помощью CSOM и попытаюсь получить список, например, сервер возвращает: «Доступ запрещен. У вас нет разрешения на выполнение этого действия или доступа к этому ресурсу», хотя я имеют разрешения (имеют полный контроль и все, что необходимо), и SharePoint предоставляет мне файл cookie FedAuth. Проверяли запросы с помощью скрипача, похоже, что 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) даже без добавления заголовка.

Может ли кто-нибудь объяснить, почему CSOM не работает, когда включены NTLM и FBA?

ответ

0

Мы столкнулись с той же проблемой, для нас это было связано с страницей входа в систему и аутентификацией. Если вы используете пользовательскую страницу входа, выполните шаги, описанные here, чтобы получить работу CSOM. Если вы не используете пользовательскую страницу входа в систему, вы все равно можете попробовать те же действия с помощью страницы входа по умолчанию SharePoint.

+0

У нас есть пользовательская страница входа в систему, просто задаваясь вопросом, можно ли аутентифицироваться без изменения самого сайта SharePoint, потому что это не всегда возможно сделать, если вы разрабатываете для клиента и не контролируете его. – PsMaster

+0

Я также хотел получить то же самое для своего сайта 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