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
相关产品推荐
相关产品推荐

