如何通过同一应用注册获取多个Azure AD的用户列表?
跨多Azure AD租户获取用户的实现方法
可以通过Microsoft Graph API实现,但没有能一次性拉取所有租户用户的统一接口,需要针对每个Azure AD租户单独处理,具体步骤如下:
1. 确认应用权限配置
确保AppReg1在TestAad1、TestAad2、TestAad3这三个租户中,都被授予了User.Read.All(或Directory.Read.All,权限范围更大)的应用权限(注意是应用权限,不是委派权限),并且已经完成了管理员同意操作。
2. 为每个租户单独获取访问令牌
Graph API的访问令牌是租户级别的,所以需要为每个目标租户单独请求令牌:
- 使用客户端凭据流(Client Credentials Flow),请求地址为
https://login.microsoftonline.com/{租户ID}/oauth2/v2.0/token - 请求参数需要包含:
client_id(AppReg1的应用ID)、client_secret(或客户端证书)、scope=https://graph.microsoft.com/.default、grant_type=client_credentials
3. 调用Graph API获取对应租户的用户
拿到对应租户的访问令牌后,调用GET https://graph.microsoft.com/v1.0/users接口,请求头带上Authorization: Bearer {该租户的访问令牌},就能获取这个租户下的所有用户,和你在单租户内调用的方式一致。
4. 合并多租户用户数据
如果需要统一的用户列表,需要自行编写逻辑,把从每个租户获取到的用户数据合并在一起。
注意:
- 不存在跨租户的用户查询接口,必须逐个租户处理
- 可以通过循环遍历所有目标租户ID的方式,批量完成令牌获取和用户查询的流程
内容的提问来源于stack exchange,提问作者Saiful Islam
相关产品推荐
相关产品推荐

