【发布时间】:2017-06-30 23:32:18
【问题描述】:
通过使用 jwt.io,我设法确定了我的应用为 Microsoft Graph API 获取的令牌仅包含 Directory.Read.All 和 User.Read 的范围:
这与我在 Azure 门户中设置的权限不同,后者包含更多范围,例如 User.ReadBasic.All:
有没有办法解决这个问题?
【问题讨论】:
-
通过Graph Explorer查看服务主体授权。在
/servicePrincipals下找到您应用的主体,然后检查/servicePrincipals/object-id/oauth2PermissionGrants。这将告诉您已为该应用授权了哪些委派权限。 -
@juunas 能否请您提供图形资源管理器的完整请求链接,对不起,我还是 microsoft graph 的新手
-
哇,Graph Explorer 刚刚更新了。所以新地址实际上是graphexplorer.azurewebsites.net。您必须在那里登录,然后在文本框中输入类似这样的内容:
https://graph.windows.net/myazuread.onmicrosoft.com/servicePrincipals,然后点击 Go。顺便说一句,这个资源管理器适用于 Azure AD Graph API,而不是 Microsoft Graph API。不同的 API。但这里的重点是在 Azure AD 中检查您的应用的权限授予。 -
@juunas 没有一个名为
oauth2PermissionGrants的属性,但只有oauth2Permissions但是它没有在 json 中显示任何范围,只有管理员和用户同意描述显示了一个非常模糊的 @ 描述987654332@ -
错了 :) 这些是您的应用提供的权限,而不是它使用的权限。找到委托人后,将文本框中的 URL 更改为例如
https://graph.windows.net/myazuread.onmicrosoft.com/servicePrincipals/service-principal-object-id/oauth2PermissionGrants。只需获取服务主体的 objectId 并用它替换 service-principal-object-id 即可。这些授权是一个导航属性,在主体本身上是不可见的。
标签: c# asp.net azure office365 microsoft-graph-api