【发布时间】:2017-08-08 23:03:11
【问题描述】:
我已经用apps.dev.microsoft.com注册了一个应用程序
并将其权限设置为:
我正在获得一个使用 Microsoft Graph API 的令牌,如下所示:
https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service#4-get-an-access-token
我将范围设置为:scope=https://graph.microsoft.com/.default
我在没有Directory.ReadWrite.All 许可的情况下取回了一个令牌。
如何修改请求以取回具有apps.dev.microsoft.com 门户下指定权限的令牌?我应该更改范围参数吗?
我按照网上的建议尝试了graph.microsoft.com/directory.readwrite.all,但没有任何运气。
【问题讨论】:
-
几个问题:1) 您是否通过了管理员同意程序? 2) 您能否提供您正在使用的完整 URL(减去您的实际客户端 ID)3) 您能否提供您在身份验证期间获得的响应?
-
@MarcLaFleur-MSFT: 1. 不需要管理员同意流程,因为我的用户是应用程序的所有者。还是我弄错了? 2.)我正在调用 login.microsoftonline.com/#{tenant}/oauth2/v2.0/token,标题为:
'Content-type' => 'application/x-www-form-urlencoded'和正文:client_id: XYZ, scope: 'https://graph.microsoft.com/.default', client_secret: XZYY, grant_type: 'client_credentials'3)对于上面的调用,我没有收到任何错误,但 JWT 令牌不包含Directory.ReadWrite.All 的权限。 -
@MarcLaFleur-MSFT 如果我尝试使用上述范围,我会得到:
Message: 400, Bad Request, {\"error\":\"invalid_scope\",\"error_description\":\"AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope https://graph.microsoft.com/Directory.ReadWrite.All is not valid.... -
@MarcLaFleur-MSFT,我已经重新同意管理员,现在 JWT 的角色是:
"roles": [ "User.ReadWrite.All", "People.Read.All", "Directory.ReadWrite.All", "User.Invite.All", "User.Read.All" ],但我仍然得到 Authorization_RequestDenied。我试图调用 POST 到端点 /schemaExtensions -
我还发现了这个帖子here。图形浏览器当前是否支持向用户实体添加 schemaExtensions 的功能?我同意,这是一次性交易,无需在应用程序中实施。