2014-10-03 94 views
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不起作用?

回答

0

我們面臨同樣的問題,對我們來說,它與登錄頁面和身份驗證有關。如果您使用的是自定義登錄頁面,請按照here中描述的步驟獲取CSOM的工作。如果您未使用自定義登錄頁面,則仍可以使用SharePoint默認登錄頁面嘗試相同的活動。

+0

我們有一個自定義的登錄頁面,只是想知道如果有可能,而無需修改SharePoint站點本身進行身份驗證,因爲它並不總是能夠做到這一點的情況下,你正在開發一個客戶端,並沒有控制它。 – PsMaster 2014-11-03 08:55:18

+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 2014-11-03 12:56:38