使用Graph API修改其他用户密码,是否可使用低于全局管理员的权限?
如何用低于全局管理员的权限通过Graph API修改用户密码?
当然可以!你遇到的问题核心是对Azure AD角色的权限范围不够了解——全局管理员权限确实太大,我们有更精细的角色可以满足修改用户密码的需求,同时遵循最小权限原则。
可行的低权限角色选项
以下几个角色都能让用户通过委托权限的Graph API修改其他用户的密码,无需全局管理员权限:
- 用户管理员:这是最常用的选项,权限范围涵盖管理普通用户的账号、密码、配置文件等操作,完全满足你的需求。
- 身份验证管理员:专注于身份验证相关操作,包括重置用户密码、管理MFA设置等,权限比用户管理员更窄。
- 密码管理员:专门负责密码生命周期管理,只能重置用户密码、设置密码策略,是权限最精细的角色。
关键配置步骤
- 分配合适的角色:在Azure AD的「角色和管理员」页面,给需要执行密码修改操作的用户分配上述角色之一。注意角色分配可能需要几分钟才能生效,别着急测试。
- 确保应用权限已获管理员同意:你的应用使用的
Directory.AccessAsUser.All是高权限委托权限,必须由租户管理员在Azure AD的「企业应用」中对该权限进行管理员同意,否则即使用户有角色,API调用也会返回权限不足的错误。 - 验证API调用格式:确保你使用的是正确的Graph API请求(PATCH方法),示例如下:
PATCH https://graph.microsoft.com/v1.0/users/{userPrincipalName} Content-Type: application/json { "passwordProfile": { "password": "YourSecurePassword123!", "forceChangePasswordNextSignIn": false } }
注意:如果要求用户下次登录必须修改密码,把
forceChangePasswordNextSignIn设为true即可。
常见问题排查
- 如果还是报错,先检查目标用户是否是受保护的管理员账户(比如其他全局管理员):这类账户的密码修改需要更高权限,普通用户管理员无法操作,但普通用户完全没问题。
- 确认角色分配的范围:如果你的角色分配设置了特定的用户组或OU范围,要确保目标用户在这个范围内。
这样配置后,你就能用远低于全局管理员的权限实现用户密码修改了。
内容的提问来源于stack exchange,提问作者Morio
相关产品推荐
相关产品推荐

