Azure AD 令牌颁发终结点不返回"scope"参数



我正在使用本文中描述的服务应用程序查询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"应用程序权限"。当对Graph API使用返回的令牌时,我能够成功地调用https://graph.microsoft.com/v1.0/users/,但不能调用其他端点。

我刚刚遇到这个问题,想详细说明标记为正确的答案,因为它是正确的答案但不是完整的解决方案。如果没有范围参数,则表示您的应用程序已注册,但管理员未同意该应用程序访问您的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门户-如果您单击右上角的帮助图标,然后选择"显示诊断",您可以在诊断JSON中找到租户id。

AppID:来自Azure门户-当您注册应用程序时,您会转到管理控制台并剪切/粘贴

本文提供了大量有用的信息,供尝试进行图集成的人参考。

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

最新更新