EWS的OAuth身份验证

问题描述 投票:0回答:3

我在使OAuth凭据与Office 365中的EWS配合使用时遇到麻烦。在较高的层次上,我正在编写SharePoint 2013应用程序,并且试图在Exchange中访问用户的邮箱数据。我确实通过将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/outlook.office365.com@<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);
}

我思考的越多,我就越想知道我的“应用”是否需要交换服务器上的权限,而这是否就是401的根本原因。

有人真的这样做过吗?我觉得应该有可能,但是我似乎找不到很多有关该过程的文档。

谢谢

ms-office sharepoint-2013 office-2013
3个回答
0
投票

第1部分:嗨,乔,您不能完全做到这一点。似乎您尝试将SharePoint令牌重播到Exchange终结点。 Exchange将拒绝SharePoint令牌,因为该令牌不是用于Exchange终结点的令牌(它将使受众检查失败)。

现在,如果您想进行Auth,则使其正常工作,Exchange的唯一方法是使用我们在SPC上宣布的新OAuth2模型。您可以在[http://www.sharepointconference.com/content/sessions/SPC379]的会议演示中获得更多详细信息(我相信我们会在几天后发布幻灯片)。我也建议您看一下三个文档,即:使用Common Consent Framework的身份验证和授权:“ http://msdn.microsoft.com/en-us/library/dn605895(v=office.15).aspx”,...


0
投票

第2部分...如何:使用“ http://msdn.microsoft.com/en-us/library/dn605894(v=office.15).aspx”处的“通用同意框架”和“ http://msdn.microsoft.com/en-us/library/dn605896(v=office.15).aspx中的使用邮件,日历和联系人REST API来处理电子邮件,日历项和联系人”,将O365与Web服务器应用程序集成]“

希望这会有所帮助,

干杯!马赛厄斯


0
投票

在您的azure应用中,添加权限以交换“ full_access_as_app”,并授予管理员同意。并使用范围var ewsScopes = new string[] { "https://outlook.office.com/.default" };获取令牌这肯定会对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.