使用Azure Graph API创建用户时遇Authorization_IdentityNotFound错误求助
问题分析与解决方案
核心问题:授权配置不匹配
你当前使用client_credentials(客户端凭证授权流),但在Azure AD中给应用配置的是委托权限——这两种权限类型与授权流完全不兼容:
- 委托权限是代表具体用户执行操作,需配合授权码流、密码流等需要用户参与的授权方式;
- 客户端凭证流是让应用以自身身份独立执行操作,必须搭配应用权限使用,这也是你触发
Authorization_IdentityNotFound错误的根本原因。
调整与操作步骤
1. 替换权限类型为应用权限
在Azure AD的应用注册页面操作:
- 进入「API权限」选项卡
- 删除现有的
User.ReadWrite、User.All、Directory.All委托权限 - 添加对应的应用权限:搜索Microsoft Graph,选择
User.ReadWrite.All、Directory.ReadWrite.All(注意选择「应用权限」类别下的权限) - 点击「授予管理员同意」(必须完成此步骤,否则权限无法生效)
2. 正确获取访问令牌
保持原令牌请求地址不变,请求体参数无需修改:
POST https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token Content-Type: application/x-www-form-urlencoded client_id={clientId} &client_secret={clientSecret} &grant_type=client_credentials &scope=https://graph.microsoft.com/.default
3. 调用创建用户API
使用获取到的Bearer令牌调用https://graph.microsoft.com/v1.0/users,请求示例:
POST https://graph.microsoft.com/v1.0/users Authorization: Bearer {access_token} Content-Type: application/json { "accountEnabled": true, "displayName": "新测试用户", "mailNickname": "testuser", "userPrincipalName": "testuser@yourdomain.onmicrosoft.com", "passwordProfile": { "forceChangePasswordNextSignIn": true, "password": "StrongPass123!" } }
验证要点
- 确认应用权限已完成管理员同意,状态显示「已授予」
- 对令牌进行解码(可本地解析或用工具查看),
roles字段应包含你配置的应用权限(如User.ReadWrite.All),而非scp字段(委托权限会显示在scp中)
内容的提问来源于stack exchange,提问作者arunaji601
相关产品推荐
相关产品推荐

