Azure PowerShell示例:同时添加委托权限与应用权限
同时添加委托权限与应用权限的示例代码
以下是修改后的PowerShell代码,可同时为Azure AD应用添加委托权限(Delegated Permissions)和应用权限(Application Permissions):
function Add-Permission { param( [string]$appName ) # 定义需要添加的委托权限列表 $delegatedPermissions = @( "AuditLog.Read.All", "Directory.Read.All", "User.Read.All", "offline_access", "Group.Read.All", "GroupMember.Read.All", "GroupMember.ReadWrite.All" ) # 定义需要添加的应用权限列表 $applicationPermissions = @( "Directory.Read.All", "User.Read.All", "Group.Read.All", "GroupMember.Read.All" ) # 获取Microsoft Graph服务主体,包含委托权限(Oauth2PermissionScopes)和应用权限(AppRoles) $graphServicePrincipal = Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" ` -Property Oauth2PermissionScopes, AppRoles # 筛选需要的委托权限 $filteredDelegatedPermissions = $graphServicePrincipal.Oauth2PermissionScopes | ` Where-Object { $delegatedPermissions -contains $_.Value } # 筛选需要的应用权限 $filteredApplicationPermissions = $graphServicePrincipal.AppRoles | ` Where-Object { $applicationPermissions -contains $_.Value } # Azure服务管理的权限示例(可根据需要保留或修改) $azureServicePermission = @{ resourceAppId = "797f4846-ba00-4fd7-ba43-dac1f8f63013" resourceAccess = @( @{ id = "41094075-9dad-400e-a0bd-54e686782033" type = "Scope" } ) } # 目标应用 $app = Get-MgApplication -Filter "DisplayName eq '$appName'" # 合并Microsoft Graph的委托与应用权限到同一个resourceAccess条目 $graphResourceAccess = @() # 添加委托权限,type为"Scope" $graphResourceAccess += $filteredDelegatedPermissions | ForEach-Object { @{ id = $_.Id type = "Scope" } } # 添加应用权限,type为"Role" $graphResourceAccess += $filteredApplicationPermissions | ForEach-Object { @{ id = $_.Id type = "Role" } } $params = @{ requiredResourceAccess = @( $azureServicePermission, @{ resourceAppId = "00000003-0000-0000-c000-000000000000" # Microsoft Graph的固定AppId resourceAccess = $graphResourceAccess } ) } Update-MgApplication -ApplicationId $app.Id -BodyParameter $params }
关键修改说明:
- 新增应用权限列表:添加
$applicationPermissions数组,定义需要的应用权限值。 - 获取应用权限数据:调用
Get-MgServicePrincipal时同时请求AppRoles属性,这是应用权限的存储位置。 - 区分权限类型:
- 委托权限对应的
type字段值为"Scope" - 应用权限对应的
type字段值为"Role"
- 委托权限对应的
- 合并权限条目:将Microsoft Graph的委托和应用权限合并到同一个
resourceAccess数组中,避免重复创建resourceAppId条目。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

