繁体   English   中英

Outlook REST API:尝试使用AZURE AD身份验证调用API

[英]Outlook REST API: trying to call API using AZURE AD authentication

使用Office 365 Outlook REST API(版本2),我有一个Web应用程序,用于管理对特定邮箱的Outlook订阅。 我已经能够使用示例获取令牌并成功使用授权代码流调用API。

但是现在,我想使用客户端凭据流,并通过代理权限使用Azure AD身份验证获取令牌(我在Office 365在线交换下为应用程序提供了所有可能的代理权限)。 与我在这里看到的类似:在没有用户交互的情况下获取Office 365 API访问令牌

我已经注册了我的申请,并获得了我的房客ID,客户ID和机密信息。 我已经能够获得令牌,但是当我尝试使用令牌时,我得到了未经授权的401返回。

这是我获取令牌的方式:

AuthenticationContext authContext = new AuthenticationContext($"{authority}{tenantId}");
clientCredential = new ClientCredential(client_Id, secret);
authResult = await authContext.AcquireTokenAsync(resource, clientCredential);
authResult.AccessToken;

这是我尝试使用API​​的方式(尝试在此代码中使用REST Sharp删除订阅):

var token = await GetOtherToken(account);
rc = new RestClient("https://outlook.office.com/api/v2.0");                    
rc.AddDefaultHeader("Authorization", $"Bearer {token}");                        
request = new RestRequest($"me/subscriptions('{restSubId}')", Method.DELETE);
request.AddHeader("Content-Length", "0");
request.AddHeader("Content-Type", "multipart/form-data");

看起来这是不可能的。 请有人,丢下一些知识。 谢谢阅读。

使用客户端凭证流获取资源的令牌时,您使用的是应用程序身份而不是用户身份。 因此,您应该为应用程序分配应用程序权限(而不是委托权限)。 另外,由于您使用的是应用程序身份而非用户身份,因此api无法识别mehttps://outlook.office.com/api/v2.0/me )。 请单击此处以了解如何在Office 365中构建服务和守护程序应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM