You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
}

关键修改说明:

  1. 新增应用权限列表:添加$applicationPermissions数组,定义需要的应用权限值。
  2. 获取应用权限数据:调用Get-MgServicePrincipal时同时请求AppRoles属性,这是应用权限的存储位置。
  3. 区分权限类型:
    • 委托权限对应的type字段值为"Scope"
    • 应用权限对应的type字段值为"Role"
  4. 合并权限条目:将Microsoft Graph的委托和应用权限合并到同一个resourceAccess数组中,避免重复创建resourceAppId条目。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 14:25:26