在Express API中通过Graph删除Azure AD用户提示权限不足如何解决
问题排查与解决方案
- 第一步:确认Microsoft Graph应用权限配置生效
你配置的User.ReadWrite.All属于应用权限,必须完成管理员同意操作才能生效,仅添加权限未授予管理员同意时权限不会生效。同时要确认你添加的是「应用权限」类型,不是「委托权限」,二者不可混用。 - 第二步:验证待删除用户的角色等级
User.ReadWrite.All仅支持删除无管理员角色的普通用户,如果待删除用户本身持有全局管理员、用户管理员等目录管理员角色,普通的Graph权限无法完成删除操作,需要给你的应用注册对应的服务主体分配更高的目录角色。 - 第三步:校验访问令牌的权限内容
你可以将代码中获取到的accessToken复制到JWT解析工具中,检查roles声明是否包含User.ReadWrite.All,避免本地缓存了旧的未携带有效权限的令牌导致请求失败。 - 第四步:调整分配的目录角色
你当前分配的4个角色均不支持用户删除操作:Attribute assignment相关角色仅负责属性分配权限、Cloud application administrator仅管理应用注册相关操作、Reports reader仅支持读取报表数据。
如果你需要删除普通用户,完成第一步的管理员同意即可;如果需要删除带管理员角色的用户,需要给应用的服务主体分配用户管理员或更高权限的目录角色。 - 第五步:排除代码外的请求问题
可以先用Postman/Graph Explorer携带你生成的令牌调用用户删除接口,确认不是参数错误、接口地址错误等非权限问题导致的报错。
关于Azure免费层级的说明:Azure AD免费层完全支持给服务主体分配各类目录角色,没有付费层级限制,你可以正常分配所需的角色。
内容的提问来源于stack exchange,提问作者Jeppe Christensen
相关产品推荐
相关产品推荐

