2017-06-29 41 views
1

目标:具有管理员的一次同意能够读取所有的公司邮箱,使用图形API的一些功能,以及某些Outlook REST API的(网络挂接更先进)如何获得管理员同意适用于Graph API端点和Outlook REST端点?

读微软的文档,似乎最好的流程是“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/tokengrant_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太弱令牌”令牌。

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

感谢

+0

让我来测试一下。事情已经在应用门户改变,我要确保我告诉你当前信息:) –

+0

一些讲座结束后,我发现,该协议是Outlook REST API的不同:它需要一个X509证书来创建一个JWT令牌。 ,似乎这是确定(没有更多的“太弱令牌”,而是一个“擅自接取”现在出现的问题:我有权授予应用程序授权的Outlook API我不能这样做,从apps.dev.microsoft.com门户。 (仅图表范围);以及自所述应用程序不具有“应用URI ID”一次通过apps.dev.microsoft.com创建(通过手动清单更新不是我不能更新从我的客户端manage.windowsazure门户授权。可以接受的),我变得疯狂 – Sybic2001

回答

0

展望端点都需要用X509证书证书获得令牌,而不是客户端机密,而且还需要与适当的观众令牌(在aud参数在JWT)。要获得所有这些,您需要在Azure门户(portal.azure.com或manage.windowsazure.com)中注册该应用程序,并将您的公钥上载到应用程序注册的清单中。我有一个这样做的示例:https://github.com/jasonjoh/outlook-fetch

不幸的是,因为它代表现在没有办法具体Outlook的范围添加到应用程序注册门户(apps.dev.microsoft.com),使得Azure的登记方法在这种情况下必要的。

+0

感谢杰森,终于成功地用自己的方式一两件事:!!得到令牌的请求需要的资源,而不是一个范围那是我的第二个问题! – Sybic2001