在Azure AD中为服务主体分配应用角色时,如何获取ResourceId?
问题解答:Graph API授予Azure AD应用API权限时的ResourceId获取方式
核心结论
ResourceId 是你要授予权限的目标API对应的服务主体(Service Principal)ID,这个值确实会因租户而异——因为每个租户中,目标API的服务主体是独立创建的。
获取ResourceId的几种方法
1. Azure门户直接查看
- 进入Azure AD的「企业应用」页面
- 搜索你要授予权限的目标API的名称(注意是API的应用名称,不是你的客户端应用)
- 进入该企业应用的详情页,从「概述」标签中复制「对象ID」,这个就是
ResourceId
2. 使用Graph API查询
可以通过目标API的应用ID(Client ID)来查询对应的服务主体ID:
// 查询目标API的服务主体 var servicePrincipals = await graphClient.ServicePrincipals .Request() .Filter($"appId eq '{目标API的ClientID}'") .GetAsync(); // 取第一个结果的ID作为ResourceId var resourceId = servicePrincipals.First().Id;
3. 使用Azure CLI命令
az ad sp list --filter "appId eq '<目标API的ClientID>'" --query "[0].id" -o tsv
关于你提到的手动同意后获取的情况
当你手动授予管理员同意时,Azure会自动为目标API在当前租户中创建对应的服务主体(如果之前不存在),这时候你能通过查询应用角色分配拿到这个ID。但自动化流程中,你不需要先手动同意,直接通过上面的方法提前获取目标API的服务主体ID即可完成权限授予。
内容的提问来源于stack exchange,提问作者Rafa Ayadi
相关产品推荐
相关产品推荐

