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

ADB2C不同用户创建渠道下UserPrincipalName存在差异问题咨询

Azure AD B2C 用Graph API创建用户时UPN配置解决方案

差异原因

你遇到的行为差异本质是Azure门户创建用户时会自动完成两个隐式配置,而直接调用Graph API需要主动补全对应参数:

  • 门户创建本地邮箱用户时,会自动校验你填入的邮箱域名是否为租户已验证的自定义域名,校验通过后直接将该邮箱赋值给userPrincipalName字段
  • 纯Graph API调用时如果没有显式传入userPrincipalName参数,或传入的域名是租户默认的.onmicrosoft.com域名,B2C服务会自动生成{objectid}@{issuerdomain}格式的系统UPN,哪怕你在identities里配置了emailAddress类型的身份标识也不会覆盖该字段

正确的Graph API创建配置

调用POST https://graph.microsoft.com/v1.0/users接口创建本地邮箱用户时,请求体需要同时满足两个条件:

  • 显式传入userPrincipalName字段,值为你期望的用户邮箱,且邮箱后缀必须是你B2C租户中已经完成验证的自定义域名
  • identities数组中保留signInType: "emailAddress"的配置,且issuerAssignedId值和userPrincipalName保持一致

示例请求体:

{
  "accountEnabled": true,
  "displayName": "测试用户",
  "mailNickname": "testuser",
  "userPrincipalName": "test@your-verified-domain.com",
  "passwordProfile": {
    "forceChangePasswordNextSignIn": false,
    "password": "YourPassword123!"
  },
  "identities": [
    {
      "signInType": "emailAddress",
      "issuer": "your-b2c-tenant.onmicrosoft.com",
      "issuerAssignedId": "test@your-verified-domain.com"
    }
  ]
}

门户展示不一致说明

你观察到的门户显示UPN和Graph返回值不一致属于B2C门户的前端展示逻辑:为了优化本地邮箱用户的可读性,门户的用户列表UPN列会优先读取identities里的邮箱值显示,而非真实的userPrincipalName字段值,没有在界面做任何提示确实容易误导排查,该设计已经存在很长时间,不属于数据异常。

内容的提问来源于stack exchange,提问作者Ryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:45:03