Azure active directory Microsoft Graph-多租户守护程序应用程序。Can';无法访问所有用户

Azure active directory Microsoft Graph-多租户守护程序应用程序。Can';无法访问所有用户,azure-active-directory,microsoft-graph-api,multi-tenant,Azure Active Directory,Microsoft Graph Api,Multi Tenant,我已经在Azure中创建了一个多租户守护程序应用程序,我假设我可以从中访问GET/users/并获取所有连接租户中的所有用户。但是,当发送此请求时,我得到的只是一个租户(创建应用程序的租户)的用户列表。我拥有所需的所有API权限,并已授予他们访问权限 我想我不理解图形工作流是如何工作的,但经过几个小时的谷歌搜索,我一点也不明白。从现在起,我只是想让这个在《邮递员》中发挥作用。任何建议都将不胜感激。您对多租户应用程序有误解 多租户应用程序用于向许多组织提供软件即服务(SaaS)应用程序。这并不意味

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


我想我不理解图形工作流是如何工作的,但经过几个小时的谷歌搜索,我一点也不明白。从现在起,我只是想让这个在《邮递员》中发挥作用。任何建议都将不胜感激。

您对多租户应用程序有误解

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

当来自其他租户(与原始租户不同)的管理员同意此多租户应用程序时,将向该租户添加具有图形权限的企业应用程序。只有该企业应用程序才能访问该租户的数据

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

首先,我假设您在租户A中创建多租户应用程序。确保您的多租户应用程序具有应用程序权限
User.Read.All

然后,对于租户B,使用管理员同意端点(在浏览器中访问以下url):

使用租户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的用户。

这是不可能的。您的应用程序只有在登录时才知道租户信息。如果来自租户的用户已登录,则只能从租户获取用户。令牌始终是特定于租户的。在这种情况下,没有用户,而是一个应用程序。如果我需要为每个租户重新验证,这是可以的。请参考类似的。希望对你有帮助嗨,你有机会了解我的答案吗?有帮助吗?
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