如何在Azure企业应用中添加指定Microsoft Graph API权限
问题根因
你进入的配置页没有新增权限的功能:企业应用(Enterprise applications)下的「权限 > 用户同意」页面仅用于查看已配置的权限、管理用户同意授权规则,本身不提供新增API权限的操作入口,所有API权限的新增、修改操作都需要回到对应应用的「应用注册(App registrations)」页面完成。
具体操作方案
方案1:手动添加目标权限
- 进入Azure AD门户,打开「应用注册」列表,找到你需要配置的新应用进入详情页
- 左侧菜单栏选择「API权限」,点击页面顶部的「+ 添加权限」按钮
- 在弹出的权限选择侧边栏中,选中「Microsoft Graph」,再选择权限类型为「委托的权限」
- 在权限搜索框中分别搜索并勾选以下4个权限:
User.Read(归属用户分类,用于登录后读取用户基本资料)openid、profile、offline_access(归属OpenID Connect分类,为基础登录必需的协议权限)
- 勾选完成后点击底部的「添加权限」按钮保存配置
- 配置完成后回到对应企业应用的「权限 > 用户同意」页面刷新,就能看到刚添加的权限,后续可按需配置用户同意策略。
方案2:复制已有成熟应用的权限配置
如果你已经有配置完全符合要求的存量应用,可以通过PowerShell直接批量复制权限,无需手动逐个勾选:
- 以应用管理员/全局管理员身份打开PowerShell,先安装Azure AD管理模块:
Install-Module AzureAD -Scope CurrentUser
- 执行命令连接到你的Azure AD租户,在弹出的登录窗口中输入管理员账号完成认证:
Connect-AzureAD
- 分别获取存量配置正确的源应用、待配置的新应用,以及Microsoft Graph的服务主体对象:
# 将单引号内的ID替换为你自己的源应用、新应用的客户端(应用)ID $sourceApp = Get-AzureADServicePrincipal -Filter "AppId eq '源应用客户端ID'" $targetApp = Get-AzureADServicePrincipal -Filter "AppId eq '新应用客户端ID'" # 00000003-0000-0000-c000-000000000000是Microsoft Graph的固定服务主体ID,无需修改 $graphServicePrincipal = Get-AzureADServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
- 读取源应用上配置的所有Microsoft Graph权限,批量分配给新应用:
$sourceGraphPermissions = Get-AzureADServiceAppRoleAssignment -ObjectId $sourceApp.ObjectId | Where-Object { $_.ResourceId -eq $graphServicePrincipal.ObjectId } foreach ($permission in $sourceGraphPermissions) { New-AzureADServiceAppRoleAssignment -ObjectId $targetApp.ObjectId -Id $permission.Id -PrincipalId $targetApp.ObjectId -ResourceId $graphServicePrincipal.ObjectId }
- 命令执行完成后回到Azure门户刷新页面,即可看到新应用的权限配置和源应用完全一致。
补充说明:
User.Read、openid、profile、offline_access是Azure AD支持用户登录的应用默认自带的基础委托权限,如果你创建应用注册时选择了「任何组织目录中的账户和个人Microsoft账户」/「仅限此组织目录中的账户」这类登录选项,系统会自动添加这几个权限,无需手动重复添加。
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

