2016-12-02 33 views
0

我想簡單的應用程序,它偵聽http請求,使REST API調用到SharePoint 2013如何從c#後端驗證SharePoint Rest API調用? (閱讀詳細信息)

場景:


用戶進行從瀏覽器到一個GET請求後端(這是在C#)。 sharepoint api從後臺調用。現在它應該使用已登錄的用戶憑據來處理此請求,但是我得到未經授權的錯誤。

直接調用REST API的瀏覽器。

注: 用戶與AD認證,所以我不希望在我的應用程序重新申請證書。 我發現的大多數解決方案都假設用戶在機器上登錄了剩餘呼叫(後端),但它的方案不同。

回答

0

Security頭是必須調用的SharePoint API。你有不同的方式來獲取AccessToken,包括純粹的HTTP調用ADFS或login.microsoft,但我認爲你需要它。

使用原生客戶端上下文的樣品。

使用更常見的REST調用
ClientContext clientContext = new ClientContext(someSharePointUrl); 
clientContext.ExecutingWebRequest += delegate (object sender, WebRequestEventArgs e) 
{ 
    e.WebRequestExecutor.WebRequest.Headers["Authorization"] = string.Format("Bearer {0}", someUserToken); 
}; 
//... then use clientContext as usual 

的樣本,還包括formDigest

HttpWebRequest itemRequest = 
    (HttpWebRequest)HttpWebRequest.Create(hostUrl + "/_api/Web/lists/getbytitle('" + listName + "')/items"); 
itemRequest.Method = "POST"; 
itemRequest.ContentLength = itemPostBody.Length; 
itemRequest.ContentType = "application/json;odata=verbose"; 
itemRequest.Accept = "application/json;odata=verbose"; 
itemRequest.Headers.Add("Authorization", "Bearer " + token); 
itemRequest.Headers.Add("X-RequestDigest", formDigest); 

另一種選擇是使用AppOnlyToken,但你必須扮演並用來API調用,需要自己管理用戶ID!

+0

感謝輸入@Albo,這個問題越來越訪問令牌只是,我不希望將用戶重定向到互聯網,需要一個內聯網解決方案。我對ADFS瞭解不多,請你解釋一下如何解決這個問題。 –

相關問題