使用Add-AzADAppPermission时Guid配置错误引发资源不存在问题
解决Add-AzADAppPermission配置自定义应用权限的问题
一、明确参数对应的GUID来源
1. -ObjectId(Client应用标识)
指需要添加权限的Client应用注册的ObjectId,可通过以下命令获取:
$clientApp = Get-AzADApplication -DisplayName "Client" $clientObjectId = $clientApp.Id
2. -ResourceId(Read/Write应用标识)
指被授予权限的Read/Write应用的Service Principal ObjectId(注意不是应用注册的Application ID),获取命令:
# 获取Read应用的Service Principal $readSp = Get-AzADServicePrincipal -DisplayName "Read" $readResourceId = $readSp.Id # 获取Write应用的Service Principal $writeSp = Get-AzADServicePrincipal -DisplayName "Write" $writeResourceId = $writeSp.Id
3. -PermissionId(应用角色ID)
指Read/Write应用中定义的“Read”“Write”应用角色的唯一ID,需从应用的App Roles配置中提取:
# 获取Read应用中"Read"角色的Id $readAppRoles = Get-AzADApplication -DisplayName "Read" | Select-Object -ExpandProperty AppRoles $readPermissionId = ($readAppRoles | Where-Object {$_.Value -eq "Read"}).Id # 获取Write应用中"Write"角色的Id $writeAppRoles = Get-AzADApplication -DisplayName "Write" | Select-Object -ExpandProperty AppRoles $writePermissionId = ($writeAppRoles | Where-Object {$_.Value -eq "Write"}).Id
二、执行权限添加命令
分别为Client应用添加Read和Write应用的权限:
# 添加Read应用权限 Add-AzADAppPermission -ObjectId $clientObjectId ` -ResourceId $readResourceId ` -PermissionId $readPermissionId ` -PermissionType "Role" # 添加Write应用权限 Add-AzADAppPermission -ObjectId $clientObjectId ` -ResourceId $writeResourceId ` -PermissionId $writePermissionId ` -PermissionType "Role"
注意:
-PermissionType指定为"Role",因为我们添加的是应用角色(Application Role),而非委托权限。
三、报错排查(针对“Resource does not exist...”)
- 确认
-ResourceId使用的是目标应用的Service Principal ObjectId,而非应用注册的Application ID或应用注册ObjectId - 检查目标应用(Read/Write)的Service Principal是否存在:刚创建的应用注册可能需要1-2分钟同步,也可手动运行
New-AzADServicePrincipal -ApplicationId <Read应用的Application ID>创建 - 核对
-PermissionId:确保对应目标应用中存在的App Role,且Value字段(如"Read")完全匹配 - 确认当前PowerShell会话已切换到正确租户:
Connect-AzAccount -TenantId <租户ID>,且账号拥有Application Administrator或Global Administrator权限
内容的提问来源于stack exchange,提问作者Ayazis
相关产品推荐
相关产品推荐

