我制作了一个多租户应用程序(客户端 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 端点的评论,而不是 V2 的评论。
有人对此有解释吗?对于我自己的应用程序定义的权限,我如何为我的客户租户获取应用程序权限?
最后,我希望能够接收具有我客户的发行者租户 ID 的令牌,但我自己的应用程序的角色/范围。