2014-03-04 249 views
0

我無法獲得OAuth憑據與Office 365中的EWS一起使用。在高級別上,我正在編寫SharePoint 2013應用程序,並試圖訪問Exchange中的用戶郵箱數據。通過替換硬編碼的用戶名和密碼的OAuth代碼,我確實驗證了我的EWS代碼是「正確的」,並且它完美地工作。OAuth身份驗證到EWS

我使用下面的代碼獲取令牌,但是當我嘗試訪問用戶的收件箱時,我收到了401。爲了簡潔起見,我將其留下,但我在訪問收件箱之前將令牌傳遞給新的OAuthCredentials對象。

string acsUrl = "https://accounts.accesscontrol.windows.net/"; 
using (WebClient exchangeTokenClient = new WebClient()) 
{ 
    exchangeTokenClient.BaseAddress = acsUrl; 

NameValueCollection requestParams = new NameValueCollection(); 
requestParams.Add("grant_type", "client_credentials"); 
requestParams.Add("client_id", "<clientid>@<realm>"); 
requestParams.Add("client_secret", "<client secret>"); 
requestParams.Add("resource", "00000002-0000-0ff1-ce00-000000000000/[email protected]<realm>"); 
exchangeTokenClient.Headers.Add("Authorization", "Bearer " + ((SharePointAcsContext)spContext).UserAccessTokenForSPAppWeb); 

byte[] responseBytes = exchangeTokenClient.UploadValues("<realm>/tokens/OAuth/2", "POST", requestParams); 

string response = Encoding.UTF8.GetString(responseBytes); 
} 

,我認爲這個的越多,我就越想知道,如果我的「應用程序」需要在Exchange服務器上的權利,如果這是401的根本原因是什麼。

有沒有人真的這樣做?我覺得應該有可能,但我似乎無法找到關於這個過程的大量文件。

感謝

回答

0

部分#1: 你好,Joe,你不能完全做到這樣。您似乎嘗試將SharePoint令牌重新播放到Exchange端點。 Exchange將拒絕SharePoint令牌,因爲該令牌不適用於Exchange端點(它無法通過觀衆檢查)。

如果您想進行驗證,現在就可以開始驗證Exchange的唯一途徑是使用我們在SPC宣佈的新OAuth2模型。您可以從我的會議演示中獲得更多詳細信息,「http://www.sharepointconference.com/content/sessions/SPC379」(我相信我們會在幾天內發佈幻燈片)。有三個文件,我也可以推薦看看,即:使用共同同意框架的身份驗證和授權:「http://msdn.microsoft.com/en-us/library/dn605895(v=office.15).aspx」,...