【发布时间】:2020-07-21 07:31:44
【问题描述】:
我制作了一个多租户应用程序(客户端 ID:“abc-efg”),它需要我的客户租户图表的一些资源。为了获得他们图表的权限,我创建了一个我的客户的 Azure 管理员单击并同意的 URL:
https://login.microsoftonline.com/organizations/v2.0/adminConsent?client_id=abc-efg&scope=https://graph.microsoft.com/.default
如果我将应用程序权限(即 Groups.Read)添加到客户端 ID 为“abc-efg”的应用程序,客户将获得同意屏幕并可以将应用程序添加到他的租户。
这很好用!
我现在有另一个应用程序公开了一些自己的权限(即:Custom.Read.All)。应用程序公开这些权限,同时也拥有这些权限。这是需要的,因为该应用是受自定义权限保护的唯一 api 消费者。
我的应用现在需要客户的这些自定义权限,所以我尝试使用与图表相同的方式:
https://login.microsoftonline.com/organizations/v2.0/adminConsent?client_id=vwx-xyz&scope=api://vwx-xyz/.default
但这会引发错误消息:
应用程序正在为自己请求令牌。这个场景是 仅当使用基于 GUID 的应用程序指定资源时才支持 标识符。
所以我只用 GUID 试试:
https://login.microsoftonline.com/organizations/v2.0/adminConsent?client_id=vwx-xyz&scope=vwx-xyz
但是找不到这个应用,因为资源不存在。
如果我在谷歌上搜索此错误消息,我只能找到旧 V1 端点的 cmets,而不是 V2。
有人对此有解释吗?对于我自己的应用定义的权限,我如何为我的客户租户获取应用权限?
最后,我希望能够接收具有我客户的颁发者租户 ID 的令牌,但我自己的应用程序的角色/范围。
【问题讨论】:
标签: oauth-2.0 azure-active-directory microsoft-identity-platform