如何通过Microsoft Graph PowerShell模块为应用注册授予管理员同意?
使用Microsoft Graph PowerShell模块为应用注册授予管理员同意
可以通过Microsoft Graph PowerShell模块实现管理员同意的授予,核心是操作应用注册对应的服务主体(Service Principal)——应用注册的权限仅为声明,实际的权限授予需要在服务主体层面完成。
结合你提供的创建应用注册的代码,完整的实现步骤如下:
- 获取应用对应的服务主体
创建应用注册后,Entra ID会自动生成对应的服务主体,通过应用的AppId筛选获取:
# 获取应用对应的服务主体 $sp = Get-MgServicePrincipal -Filter "appId eq '$($app.AppId)'"
- 获取目标API(Microsoft Graph)的服务主体ID
你代码中使用的00000003-0000-0000-c000-000000000000是Microsoft Graph的AppId,需要获取其对应的服务主体ID作为权限授予的ResourceId:
# 获取Microsoft Graph的服务主体 $graphSp = Get-MgServicePrincipal -Filter "appId eq '00000003-0000-0000-c000-000000000000'"
- 授予应用权限(管理员同意)
使用New-MgServicePrincipalAppRoleAssignment命令完成权限授予,参数对应关系如下:
ServicePrincipalId:你的应用服务主体ID(即$sp.Id)PrincipalId:你的应用服务主体ID(应用权限是授予自身服务主体)ResourceId:Microsoft Graph的服务主体ID(即$graphSp.Id)AppRoleId:你声明的权限ID(5ac13192-7ace-4fcf-b828-1a26f28068ee,对应DeviceManagementServiceConfig.ReadWrite.All)
执行命令:
# 授予管理员同意的应用权限 New-MgServicePrincipalAppRoleAssignment ` -ServicePrincipalId $sp.Id ` -PrincipalId $sp.Id ` -ResourceId $graphSp.Id ` -AppRoleId "5ac13192-7ace-4fcf-b828-1a26f28068ee"
说明
- 该操作需要具备Global Administrator或Privileged Role Administrator等有权限授予管理员同意的角色。
- 若要授予委托权限(
Type="Scope"),逻辑类似,但需要通过创建OAuth2PermissionGrant完成,不过你的场景是应用权限(Type="Role"),上述方法完全适用。
内容的提问来源于stack exchange,提问作者user24663471
相关产品推荐
相关产品推荐

