2016-12-02 11 views
0

(詳細を読む)私は、HTTP要求を待機し、残りのAPIがSharePointに呼び出しを行う簡単なアプリケーションをしようとしています2013年C#バックエンドからSharePoint Rest API呼び出しを認証する方法は?

シナリオ:ユーザーがへのブラウザからのGET要求を行う


バックエンド(これはc#にあります)。 sharepoint apiはバックエンドから呼び出されます。これで、この要求に対してログインしたユーザーの資格情報を使用する必要がありますが、不正なエラーが発生します。

ブラウザから直接残りのapiを呼び出す。

注: ユーザーはADで認証されているため、アプリで再度資格情報を要求しないようにします。 私が見つけたほとんどのソリューションは、ユーザーが休憩コール(バックエンド)を行っているマシンにログインしているが、そのシナリオが異なると想定しています。

答えて

0

セキュリティヘッダーは、SharePoint APIを呼び出すために必須です。 AccessTokenを入手するには、ADFSまたはlogin.microsoftへの純粋なHTTP呼び出しを含むさまざまな方法がありますが、必要と思われます。

ネイティブクライアントコンテキストを使用するサンプル。また

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); 

formDigest

含む

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 

より一般的なREST呼び出しを使用して、サンプル、その他のオプションはAppOnlyTokenを使用することですが、あなたはその後、APIへの呼び出しを偽装し、ユーザーIDを自分で管理する必要がありました!

+0

@Alboの入力をありがとう、この問題はアクセストークンのみを取得しています。ユーザーをインターネットにリダイレクトする必要はなく、イントラネット専用のソリューションが必要です。私はADFSについてはあまりよく分かりませんが、それにどう対処するか説明してください。 –

関連する問題