You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:32:08