如何获得管理员同意为Graph API端点和Outlook REST端点工作?

时间:2017-06-29 17:00:46

标签: oauth-2.0 microsoft-graph outlook-restapi

目标:获得管理员的一次性同意,能够使用Graph API的一些功能读取所有公司邮箱,以及一些Outlook REST API(webhooks更高级)

阅读Microsoft文档,似乎最好的流程是" OAuth 2.0客户端凭据授予"。

  • 我的应用是通过apps.microsoft.com创建的,范围定义为访问所有邮箱。
  • 管理员连接到https://login.microsoftonline.com/common/adminconsent?client_id=XXX&redirect_uri=XXX
  • 然后我使用https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token

  • 将令牌检索到grant_type=client_credentials&client_id=XX&client_secret=XX&scope=https://graph.microsoft.com/.default
  • 返回令牌。一切都与Microsoft Graph完美​​配合。

但是当我检索一个令牌,将范围更改为https://outlook.office.com/.default时,我得到一个令牌,该令牌因我的查询而被拒绝,其中401和一个“弱”令牌的强度为1而不是2&# 39;

我们应该在哪里更改范围?或者我应该有另一个授权流程吗?

由于

1 个答案:

答案 0 :(得分:0)

Outlook端点需要使用X509证书凭据获取的令牌,而不是客户端密钥,并且还需要具有适当受众的令牌(JWT中的aud参数)。要获得所有这些,您需要在Azure门户(portal.azure.com或manage.windowsazure.com)中注册该应用程序,并在应用程序注册清单中上传您的公钥。我在这里有一个示例:https://github.com/jasonjoh/outlook-fetch

不幸的是,由于它现在没有办法将特定于Outlook的范围添加到App注册门户(apps.dev.microsoft.com),因此在这种情况下需要Azure注册方法。