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

使用手机号通过Azure AD B2C注册未收验证码的问题咨询

问题分析与解决方案

核心原因

直接调用https://graph.microsoft.com/v1.0/users创建用户仅完成了用户实体的存储,Azure AD B2C不会自动触发验证码发送——用户流之所以能正常发验证码,是因为它包含了完整的身份验证交互逻辑(发起验证码请求、验证有效性),而Graph API仅负责用户数据管理,不涉及身份验证流程的触发。

解决方案步骤

1. 修正用户创建请求的格式问题

你的请求中identities里的手机号(+1 416-000-0000)与mobilePhone字段(+1 416 000 000)格式不一致且位数不符,需统一为E.164标准格式(无空格、无分隔符,如+14160000000),避免后续验证时出现匹配问题:

{
  "accountEnabled": true,
  "displayName": "Test Name",
  "identities": [
    {
      "signInType": "phoneNumber",
      "issuer": "testorg.onmicrosoft.com",
      "issuerAssignedId": "+14160000000"
    }
  ],
  "mobilePhone": "+14160000000",
  "passwordPolicies": "DisablePasswordExpiration",
  "passwordProfile": {
    "password": "82510f31-1c89-d103-73c8-9fbedda45dcc",
    "forceChangePasswordNextSignIn": false
  }
}

2. 自定义注册/登录的验证码流程(无需用户流)

要实现自定义页面的验证码收发,需基于Azure AD B2C自定义策略对接官方验证码服务(不能自行发送验证码,否则无法与Azure AD B2C身份体系绑定):

  • 注册流程:
    1. 自定义前端收集用户手机号,提交到你的后端接口。
    2. 后端通过修正后的Graph API请求创建用户。
    3. 调用Azure AD B2C自定义策略中的验证码发送端点,向用户手机号发送验证码。
    4. 前端收集用户输入的验证码,后端调用Azure AD B2C验证端点确认有效性,验证通过即完成注册。
  • 登录流程:
    1. 自定义前端收集用户手机号,提交到后端接口。
    2. 后端调用Azure AD B2C验证码发送端点,向该手机号发送验证码。
    3. 前端收集验证码后,后端调用验证端点确认有效性,通过后获取Azure AD B2C的ID/访问令牌,完成登录。

3. 关键配置要点

  • 确保Azure AD B2C已配置短信提供商(如Twilio、Azure通信服务),你之前用户流能正常收验证码,说明该配置已完成。
  • 自定义策略中需包含手机号验证的技术配置,允许直接调用验证码收发逻辑,脱离预定义用户流的UI限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:20:34