Microsoft Graph-多租户守护程序应用程序。无法访问所有用户

时间:2020-09-07 10:57:17

标签: azure-active-directory microsoft-graph-api multi-tenant

我在Azure中创建了一个多租户守护程序应用程序,我假设我可以从中访问GET / users /并获取所有连接的租户中的所有用户。但是,发送此请求后,我得到的只是一个租户(创建应用程序的那个)的用户列表。我拥有所需的所有API权限,并已授予他们访问权限。

我假设我误解了Graph工作流应该如何工作,但是经过数小时的搜索后,我再也不明智了。到目前为止,我只是想让它在Postman中工作。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

您对多租户应用有误解。

多租户应用程序用于为许多组织提供软件即服务(SaaS)应用程序。这并不意味着原始应用可以访问其他已同意租户的资源。它只能允许那些租户访问他们自己的资源。

当另一租户(与原始租户不同)的管理员同意此多租户应用程序时,具有Graph权限的企业应用程序将被添加到该租户。只有该企业应用程序有权访问该租户的数据。

因此,在您的情况下,您正在使用客户端凭据流(仅在没有用户的情况下使用应用程序),但在其他租户的管理员同意下,您可以使用添加到这些租户中的企业应用程序来访问其中的用户。

首先,我假设您在租户A中创建了多租户应用。确保您的多租户应用具有“应用许可” User.Read.All

然后使用管理员同意端点do the admin consent租户B(在浏览器中访问以下URL):

https://login.microsoftonline.com/{tenant-id of tenant B}/adminconsent?client_id={client-id of the multi-tenant app}

使用租户B 的管理员帐户登录以征得管理员同意。这会将企业应用程序添加到租户B。

现在您可以像这样获得令牌:

POST https://login.microsoftonline.com/{tenant id of tenant B}/oauth2/v2.0/token

client_id={client id of the multi-tenant app}
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret={client secret}
&grant_type=client_credentials

访问令牌将能够列出租户B的用户。