Azure AD 令牌颁发端点没有 return "scope" 参数

Azure AD Token Issuing Endpoint doesn't return "scope" parameter

我正在使用本文所述的服务应用查询 Microsoft Graph:http://graph.microsoft.io/en-us/docs/authorization/app_only

我能够成功地向特定租户 URL 发出 POST 请求并获得指定的 JSON 响应:

{ 
  "token_type": "Bearer",
  "expires_in": "3599",
  "scope": "User.Read",
  "expires_on": "1449685363",
  "not_before": "1449681463",
  "resource": "https://graph.microsoft.com",
  "access_token": "<token>"
}

除了缺少 "scope" 参数。我在我的 AD 配置面板中检查了所有 "Office 365 Exchange Online" "Application Permissions"。当对图 API 使用返回的令牌时,我能够成功调用 https://graph.microsoft.com/v1.0/users/ 但没有其他端点。

您需要select Microsoft Graph 服务中可用列表中的应用程序范围,然后征得管理员同意

我刚遇到这个问题,想详细说明标记为正确的答案,因为它是正确的答案,但不是完整的解决方案。如果没有范围参数,则表示您的应用已注册,但管理员未同意该应用访问您的 AD 实例。注册您的应用程序后,您必须构建并转到以下 URL 以授权该应用程序(当然使用管理员帐户):

GET https://login.microsoftonline.com/{TenantID}/adminconsent?
client_id=<APP ID>
&state=<This is optional for your app to use>
&redirect_uri=<ReturnURL>

TenantID: 来自 Azure 门户 - 如果您单击右上角的“帮助”图标,然后选择 'Show Diagnostics',您可以在诊断中找到租户 ID JSON.

AppID: 来自 Azure 门户 - 当您注册您的应用程序时,您转到管理控制台并 cut/paste

This article 为尝试进行图形集成的人们提供了大量有用的信息。