Azure Graph如何通过PrincipalId(ObjectId)查询对应主体类型
Azure Graph 按ObjectId查询主体类型的解决方案
有两种成熟的实现方式可以直接通过ObjectId匹配对应的主体类型,无需预先判断调用端点:
1. 单ID查询方案
调用微软Graph的directoryObjects通用端点,直接传入目标ObjectId即可:
- 请求地址:
GET https://graph.microsoft.com/v1.0/directoryObjects/{你的ObjectId} - 返回结果中会携带
@odata.type字段,可直接识别主体类型:- 值为
#microsoft.graph.user对应普通用户 - 值为
#microsoft.graph.group对应安全组/Office 365组 - 值为
#microsoft.graph.application对应应用程序
- 值为
- 若仅需要获取类型无需其他信息,可以添加
$select参数减少请求开销:GET https://graph.microsoft.com/v1.0/directoryObjects/{你的ObjectId}?$select=id,@odata.type
2. 批量ID查询方案
如果需要一次性查询多个ID的类型,可以调用getByIds方法,单次最多支持查询1000个ObjectId:
- 请求地址:
POST https://graph.microsoft.com/v1.0/directoryObjects/getByIds - 请求头需要指定
Content-Type: application/json - 请求体示例:
{ "ids": ["ObjectId1", "ObjectId2", "ObjectId3"], "types": [] }
其中
types字段留空即可返回所有匹配的目录对象,返回结果的每个条目同样会携带@odata.type字段标识主体类型。
权限说明
调用上述接口需要至少持有Directory.Read.All应用权限或委托权限,否则会返回403无权限错误。
内容的提问来源于stack exchange,提问作者kent2004
相关产品推荐
相关产品推荐

