【问题标题】:Microsoft Graph API token's scope is different from the ones set in the Azure portalMicrosoft Graph API 令牌的范围与 Azure 门户中设置的范围不同
【发布时间】: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


【解决方案1】:

当您在用户已经登录并同意您的应用后返回您的应用并添加其他权限时,我经常会看到这种情况。该用户继续获得“旧”权限,但新用户将获得新权限。

如果我的猜测是正确的,那么您最初可能只使用Directory.Read.AllUser.Read 注册了该应用程序。您使用您的用户帐户登录。然后你去添加额外的权限并再次尝试。听起来对吗?

问题在于 Azure 的 v1 终结点不会动态更新已同意用户的范围。您需要为这些用户强制“重新同意”体验。将 prompt=consent 参数添加到您的授权 URL。这应该会导致用户再次看到带有更新的权限列表的同意屏幕。

【讨论】:

  • 对不起,我对此还是很陌生,我刚刚在编辑中添加了获取令牌的代码,但我不确定在代码中添加prompt=consent 的位置跨度>
  • ADAL 有几个不同的版本。你用的是哪一个?
  • 我认为它是 2.14,因为它在 Nuget 包管理器中是这么说的
  • 好的。我需要看看你在哪里进行实际的用户登录。您粘贴在那里的代码使用AcquireTokenSilentAsync,这意味着您已经登录。这是一个网络应用程序吗?您是否使用 OWIN 登录?
  • AcquireTokenSilentAsync 附带Active.Directory Nuget 包。对于登录,我将 Visual Studio 中的内置 Configure Azure AD Authentication 用于我的 Web 应用程序。我已经从Startup.Auth 添加了我的代码,看看它是否有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 2016-08-04
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多