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

如何通过API实现Azure B2C用邮箱作为外部用户登录用户名?

解决方案:在Azure B2C中创建自定义邮箱用户名的本地账户

核心思路

Azure B2C的**本地账户(Local Account)**支持直接使用任意邮箱作为登录用户名,无需依赖已验证域名。通过Microsoft Graph的Create User API,只需重点配置signInNames属性(而非受域名限制的userPrincipalName),即可实现和门户手动创建一致的效果。

具体步骤

1. 确认API权限

确保你的应用已获得Microsoft Graph的应用权限:

  • User.ReadWrite.All 或 Directory.ReadWrite.All

注意:必须使用应用权限(而非委托权限),因为是后台创建用户,无需用户交互。

2. 调用Microsoft Graph Create User API

发送POST请求到https://graph.microsoft.com/v1.0/users,请求体示例如下:

{
  "accountEnabled": true,
  "displayName": "张三",
  "mailNickname": "zhangsan",
  "userPrincipalName": "zhangsan_随机字符串@{your-b2c-domain}.onmicrosoft.com",
  "passwordProfile": {
    "forceChangePasswordNextSignIn": true,
    "password": "临时密码(需符合B2C密码策略)"
  },
  "signInNames": [
    {
      "type": "emailAddress",
      "value": "user-prefer@any-domain.com"
    }
  ]
}

关键参数说明:

  • signInNames:这是用户实际登录时使用的用户名,type设为emailAddress,value直接填用户偏好的任意邮箱,不受域名验证限制。
  • userPrincipalName:仅用于后台标识,必须符合B2C已验证域名(可使用B2C默认的.onmicrosoft.com域名),用户登录时不会用到这个值,所以可以用随机字符串+默认域名组合避免冲突。
  • passwordProfile:设置临时密码,并强制用户首次登录时修改,保障安全。

3. 自定义用户通知(可选)

由于未使用Invitation API,你需要自行发送邮件通知用户:

  • 告知用户登录门户的邮箱用户名
  • 提供临时密码和登录链接
  • 提示首次登录需修改密码

这样既保留了准入控制权,又避免了Invitation API生成的冗长用户名。

注意事项

  • 确保创建的是本地账户,而非Azure AD账户(后者受域名验证限制)。
  • 密码必须符合你的Azure B2C租户的密码复杂度策略。
  • 若需批量创建用户,可批量调用该API或使用Graph批量请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:18:19