如何使用PowerShell在Azure应用中添加多个委派权限?
解决Azure应用注册添加委派权限时覆盖已有权限的问题
问题出在Set-AzureADApplication的-RequiredResourceAccess参数是完全替换应用的现有权限配置,而非追加。每次调用原函数时,都会把之前设置的权限全部覆盖,只保留当前调用的权限。
修改方案:先获取现有权限,再追加新权限
要实现新增权限而不覆盖,需要先读取应用当前已有的权限配置,在这个基础上添加新权限,最后再整体提交更新。
以下是修改后的完整脚本:
$graph = "00000003-0000-0000-c000-000000000000" $sharePoint = "00000003-0000-0ff1-ce00-000000000000" $userRead = "e1fe6dd8-ba31-4d61-89e7-88639da4683d" $myFilesWrite = "2cfdc887-d7b4-4798-9b33-3d98d6b95dd2" $allSitesWrite = "640ddd16-e5b7-4d71-9690-3f4022699ee7" Function AddDelegatedPermission($appObjectId, $resourceId, $permissionId) { # 获取应用当前的权限配置 $app = Get-AzureADApplication -ObjectId $appObjectId $existingPermissions = $app.RequiredResourceAccess # 查找是否已存在对应资源的权限组 $resourcePermissionGroup = $existingPermissions | Where-Object { $_.ResourceAppId -eq $resourceId } # 创建新的委派权限对象 $newPermission = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList $permissionId, "Scope" if ($resourcePermissionGroup) { # 检查权限是否已存在,避免重复添加 if (-not ($resourcePermissionGroup.ResourceAccess | Where-Object { $_.Id -eq $permissionId })) { $resourcePermissionGroup.ResourceAccess += $newPermission } } else { # 若对应资源无权限组,新建一个并加入现有列表 $newPermissionGroup = New-Object -TypeName "Microsoft.Open.AzureAD.Model.RequiredResourceAccess" $newPermissionGroup.ResourceAppId = $resourceId $newPermissionGroup.ResourceAccess = @($newPermission) $existingPermissions += $newPermissionGroup } # 提交完整的权限列表,替换原有配置 Set-AzureADApplication -ObjectId $appObjectId -RequiredResourceAccess $existingPermissions } # 依次添加三个委派权限 AddDelegatedPermission $myApp.ObjectId $graph $userRead AddDelegatedPermission $myApp.ObjectId $graph $myFilesWrite AddDelegatedPermission $myApp.ObjectId $sharePoint $allSitesWrite
关键说明:
- 读取现有权限:每次添加前先通过
Get-AzureADApplication获取应用当前的所有权限配置,确保不会丢失已设置的权限。 - 权限分组管理:同一资源(如Microsoft Graph)的权限会被归到同一个
RequiredResourceAccess对象下,新增权限时直接追加到该组。 - 重复检查:添加前先判断权限是否已存在,避免重复添加相同权限。
- 整体提交更新:最后用包含所有权限的完整列表调用
Set-AzureADApplication,确保所有权限都被保留。
内容的提问来源于stack exchange,提问作者user1176737
相关产品推荐
相关产品推荐

