2014-03-04 255 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”,...