调用Microsoft Graph /users接口返回Authorization_IdentityNotFound错误如何解决
Microsoft Graph /users接口调用报错排查方案
- 确认权限配置匹配调用场景
你使用客户端秘钥获取token属于客户端凭据流,必须配置应用权限而非委托权限,就算配置了委托权限也不会生效。同时要确认User.Read.All等目标接口所需的权限已经完成全局管理员同意,仅添加权限未做管理员同意不会生效。 - 校验Access Token实际包含的权限
不要仅以能拿到token判定权限有效,用本地JWT解析工具解码你拿到的access token,检查roles声明中是否存在你配置的对应Graph权限,权限未同意、权限类型选错都会导致token中缺失对应角色声明。 - 检查请求格式是否正确
确认请求头Authorization字段的格式为Bearer {你的access token},注意Bearer和token内容之间必须有一个空格,不要多写/漏写字符。如果是查询单个用户,需要确认/users/{用户标识}路径中的用户ID或用户主体名拼写正确,租户内不存在对应用户也会抛出报错。 - 确认租户范围匹配
确认你获取token时使用的租户ID,和你要查询的用户所属租户一致。如果是多租户应用,不能用common端点获取token后查询其他租户的用户,必须替换为目标租户的实际租户ID来获取token。同时确认租户内没有配置条件访问策略限制当前服务主体调用Graph接口。 - 提取完整错误信息定位根因
保留接口返回的完整响应体,其中error.code和error.message字段会给出明确的错误指向:例如返回Authorization_RequestDenied基本可判定为权限配置问题,返回Request_ResourceNotFound则是目标查询资源不存在。
内容的提问来源于stack exchange,提问作者Kevin McQuown
相关产品推荐
相关产品推荐

