使用Graph REST API在Entra ID中为应用注册创建用户范围
正确更新Entra ID应用注册用户范围的Graph API方式
你遇到的问题是因为直接使用了已废弃的顶级oauth2Permissions字段,当前Graph API v1.0中,应用注册的用户范围(对应应用清单里的oauth2Permissions)实际对应application资源的api.oauth2PermissionScopes属性,需通过该路径进行更新。
以下是两种可行的更新方式:
1. 替换整个权限范围数组(需包含所有现有范围)
这种方式会覆盖原有所有用户范围,因此需要将现有范围和新范围一起提交:
PATCH https://graph.microsoft.com/v1.0/applications/{applicationId} Authorization: Bearer <your-access-token> Content-Type: application/json { "api": { "oauth2PermissionScopes": [ // 保留所有已存在的用户范围 { "adminConsentDescription": "原权限的管理员授权描述", "adminConsentDisplayName": "原权限的管理员授权名称", "id": "原权限的唯一GUID", "isEnabled": true, "type": "User", "userConsentDescription": "原权限的用户授权描述", "userConsentDisplayName": "原权限的用户授权名称", "value": "原权限的标识值" }, // 添加新的用户范围 { "adminConsentDescription": "Read access to user profiles", "adminConsentDisplayName": "Read user profiles", "id": "生成的唯一新GUID", // 必须自行生成不重复的GUID "isEnabled": true, "type": "User", "userConsentDescription": "Read access to your user profile", "userConsentDisplayName": "Read your user profile", "value": "User.Read" } ] } }
2. 增量添加单个用户范围(推荐,避免覆盖原有数据)
使用JSON Patch格式进行增量更新,仅添加新的范围,无需修改现有数据:
PATCH https://graph.microsoft.com/v1.0/applications/{applicationId} Authorization: Bearer <your-access-token> Content-Type: application/json-patch+json [ { "op": "add", "path": "/api/oauth2PermissionScopes/-", "value": { "adminConsentDescription": "Read access to user profiles", "adminConsentDisplayName": "Read user profiles", "id": "生成的唯一新GUID", "isEnabled": true, "type": "User", "userConsentDescription": "Read access to your user profile", "userConsentDisplayName": "Read your user profile", "value": "User.Read" } } ]
关键注意事项:
- 每个用户范围的
id必须是全局唯一的GUID,不能与其他范围重复,需自行生成 - 调用该API需要具备
Application.ReadWrite.All或Directory.AccessAsUser.All权限 - 若需更新现有范围,可将
op设为replace,并指定具体范围的索引路径(如/api/oauth2PermissionScopes/0),同时提交修改后的字段内容
内容的提问来源于stack exchange,提问作者Pablo Cibraro
相关产品推荐
相关产品推荐

