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

Azure新建用户调用Update User API提示权限不足,求权限配置指引

我来帮你解决Azure AD中调用Update User等API时遇到的权限不足问题,下面详细说明所需的角色、权限以及配置方法:

一、Update User、修改密码及重置密码所需的角色与权限

针对不同的操作,Azure AD要求的角色和Delegated/Application权限有所不同,具体如下:

1. Update User(更新用户基本信息)

  • 角色要求:
    • 全局管理员
    • 用户管理员
    • 目录写入者
    • 或者自定义角色包含User.ReadWrite.All、User.ReadWrite(委托权限)或User.ReadWrite.All(应用权限)
  • 权限要求:
    • 委托权限:User.ReadWrite(仅能更新当前用户自身信息)或User.ReadWrite.All(可更新所有用户信息)
    • 应用权限:User.ReadWrite.All(服务主体可更新所有用户信息)

2. 修改用户密码

  • 角色要求:
    • 全局管理员
    • 用户管理员
    • 密码管理员
  • 权限要求:
    • 委托权限:User.ReadWrite.All + Directory.AccessAsUser.All(如果是代表用户操作)
    • 应用权限:User.ReadWrite.All(服务主体操作时)

    注意:普通用户默认只能修改自己的密码,此时需要User.ReadWrite委托权限即可。

3. 重置用户密码(强制重置,非用户自行修改)

  • 角色要求:
    • 全局管理员
    • 用户管理员
    • 密码管理员
  • 权限要求:
    • 委托权限:User.ReadWrite.All + Directory.AccessAsUser.All
    • 应用权限:User.ReadWrite.All

    重置密码属于高权限操作,普通用户无法执行,必须由具备上述角色的账号或服务主体操作。

二、权限配置方法

你可以通过两种方式配置所需权限:创建用户时直接赋予角色,或者后续通过REST API为用户添加角色/权限。

1. 创建用户时配置角色(通过REST API)

在调用POST https://graph.microsoft.com/v1.0/users创建用户时,可以同时为用户分配角色。具体步骤:

  • 先获取目标角色的directoryRoleTemplateId(比如用户管理员的模板ID是fe930be7-5e62-47db-91af-98c3a49a38b1)
  • 在创建用户的请求体中,添加directoryRoles@odata.bind属性,格式如下:
    {
      "accountEnabled": true,
      "displayName": "John Doe",
      "mailNickname": "johndoe",
      "userPrincipalName": "johndoe@contoso.com",
      "passwordProfile": {
        "forceChangePasswordNextSignIn": true,
        "password": "Password123!"
      },
      "directoryRoles@odata.bind": [
        "https://graph.microsoft.com/v1.0/directoryRoles/fe930be7-5e62-47db-91af-98c3a49a38b1"
      ]
    }
    

    注意:只有具备足够权限的账号(比如全局管理员)才能在创建用户时分配角色。

2. 后续通过REST API为用户添加角色/权限

如果创建用户时未分配角色,后续可以调用Graph API为用户添加角色:

  • 步骤1:检查目标角色是否已激活(如果是首次使用该角色,需要先激活)
    调用POST https://graph.microsoft.com/v1.0/directoryRoles,请求体为:
    {
      "roleTemplateId": "fe930be7-5e62-47db-91af-98c3a49a38b1"
    }
    
  • 步骤2:将用户添加到该角色
    调用POST https://graph.microsoft.com/v1.0/directoryRoles/{role-id}/members/$ref,请求体为:
    {
      "@odata.id": "https://graph.microsoft.com/v1.0/users/{user-id}"
    }
    
三、排查权限不足的额外注意事项
  • 确保你用来获取令牌的账号/服务主体本身具备分配角色的权限(比如全局管理员或用户管理员)
  • 如果使用委托权限,要确认令牌的scp声明中包含所需的权限(比如User.ReadWrite.All)
  • 如果是服务主体调用API,要确保应用注册中已添加并授予User.ReadWrite.All等应用权限,且已完成管理员同意

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:57:01