Microsoft Graph API使用Application Token调用PATCH user更新密码权限报错
问题描述
通过携带Application Token的Node.js Graph API应用更新用户密码,调用端点为PATCH /users/{userId},请求体示例如下:
{ "passwordProfile": { "forceChangePasswordNextSignIn": true, "password": "newPassword" } }
已配置全部所需的应用权限和委托权限:User.ReadWrite.All、User.ManageIdentities.All、Directory.ReadWrite.All。目前有开发、生产两个租户,该功能在开发租户运行正常,生产租户调用失败,返回错误:Error: Could not update password. Error: Authorization_RequestDenied。
权限配置截图如下:


解决方案
按以下优先级排查即可定位问题:
- 确认生产租户的权限已完成管理员同意:仅配置权限而未点击「授予管理员同意」按钮权限不会生效,开发租户大概率之前已完成该操作,生产租户多为遗漏该步骤导致报错。
- 检查目标用户的角色属性:如果要修改密码的用户属于全局管理员、用户管理员等Azure AD高权限内置角色,普通Graph应用权限默认无法修改这类用户的密码,需要额外给应用注册分配「密码管理员」「全局管理员」等高权限目录角色。
- 验证Token获取流程是否正确:应用权限需要通过
client_credentials流获取Token,确认生产环境配置的客户端ID、客户端密钥/证书和你配置权限的应用注册信息一致,没有混用开发租户的应用信息。 - 排查生产租户的额外限制:检查生产租户是否设置了自定义密码策略、条件访问策略限制服务主体修改用户密码,可通过Azure AD的审计日志、登录日志查看接口调用被拒绝的具体原因。
内容的提问来源于stack exchange,提问作者Suresh
相关产品推荐
相关产品推荐

