如何获得管理员同意同时适用于 Graph API 端点和 Outlook REST 端点?
How to get admin consent working both for Graph API endpoint and Outlook REST endpoint?
objective:获得管理员的一次性同意,可以使用 Graph API 的一些功能和 Outlook REST API 的一些功能来读取所有公司邮箱(网络钩子更高级)
看了微软文档,好像最好的流程是"OAuth 2.0 client credentials grant"。
- 我的应用程序是通过 apps.microsoft.com 创建的,定义了范围以访问所有邮箱。
- 管理员连接到
https://login.microsoftonline.com/common/adminconsent?client_id=XXX&redirect_uri=XXX
。
然后我使用 grant_type=client_credentials&client_id=XX&client_secret=XX&scope=https://graph.microsoft.com/.default
将令牌检索到 https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
令牌已返回。一切都与 Microsoft Graph 完美配合。
但是当我检索一个令牌时,将范围更改为 https://outlook.office.com/.default
,我得到一个令牌,它被拒绝用于我的查询,带有 401 和 'too weak token with strength 1 instead of 2'。
我们应该在哪里更改范围?或者我应该有另一个授权流程?
谢谢
Outlook 端点需要使用 X509 证书凭据而不是客户端机密获取的令牌,并且它还需要具有适当受众的令牌(JWT 中的 aud
参数)。要获得所有这些,您需要在 Azure 门户(portal.azure.com 或 manage.windowsazure.com)中注册该应用程序,并在应用程序注册清单中上传您的 public 密钥。我在这里有一个示例:https://github.com/jasonjoh/outlook-fetch.
不幸的是,目前无法将特定于 Outlook 的范围添加到应用程序注册门户 (apps.dev.microsoft.com),因此在这种情况下必须使用 Azure 注册方法。
objective:获得管理员的一次性同意,可以使用 Graph API 的一些功能和 Outlook REST API 的一些功能来读取所有公司邮箱(网络钩子更高级)
看了微软文档,好像最好的流程是"OAuth 2.0 client credentials grant"。
- 我的应用程序是通过 apps.microsoft.com 创建的,定义了范围以访问所有邮箱。
- 管理员连接到
https://login.microsoftonline.com/common/adminconsent?client_id=XXX&redirect_uri=XXX
。 然后我使用
grant_type=client_credentials&client_id=XX&client_secret=XX&scope=https://graph.microsoft.com/.default
将令牌检索到 令牌已返回。一切都与 Microsoft Graph 完美配合。
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
但是当我检索一个令牌时,将范围更改为 https://outlook.office.com/.default
,我得到一个令牌,它被拒绝用于我的查询,带有 401 和 'too weak token with strength 1 instead of 2'。
我们应该在哪里更改范围?或者我应该有另一个授权流程?
谢谢
Outlook 端点需要使用 X509 证书凭据而不是客户端机密获取的令牌,并且它还需要具有适当受众的令牌(JWT 中的 aud
参数)。要获得所有这些,您需要在 Azure 门户(portal.azure.com 或 manage.windowsazure.com)中注册该应用程序,并在应用程序注册清单中上传您的 public 密钥。我在这里有一个示例:https://github.com/jasonjoh/outlook-fetch.
不幸的是,目前无法将特定于 Outlook 的范围添加到应用程序注册门户 (apps.dev.microsoft.com),因此在这种情况下必须使用 Azure 注册方法。