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

Azure AD B2C PhoneFactor仅验证手机号,阻止VOIP用于MFA

Azure AD B2C MFA限制仅验证非VOIP手机号解决方案

核心思路

要解决MFA环节允许VOIP号码的问题,得从自定义策略的PhoneFactor配置和号码验证逻辑入手,把你注册环节已经用的非VOIP检查逻辑复用过来,同时强制MFA仅走手机号验证流程。

具体操作步骤

1. 锁定PhoneFactor-InputOrVerify为仅手机号验证

打开你的自定义策略文件,找到<TechnicalProfile Id="PhoneFactor-InputOrVerify">节点,修改它的Metadata配置:

<TechnicalProfile Id="PhoneFactor-InputOrVerify">
  <Metadata>
    <!-- 强制用短信验证,排除语音选项 -->
    <Item Key="setting.authenticationMode">sms</Item>
    <!-- 如果不想让用户输入新号码,只验证已有手机号,就把这个设为false -->
    <Item Key="setting.showSignupLink">false</Item>
  </Metadata>
  <!-- 其他原有配置保留 -->
</TechnicalProfile>

如果需要允许用户输入新手机号,但必须检查非VOIP,就保留showSignupLink为true,接着往下加验证步骤。

2. 把非VOIP号码检查加到MFA流程里

你注册环节已经有验证非VOIP号码的REST API了吧?直接把这个验证步骤插到MFA的用户旅程里,放在PhoneFactor验证之前:

<!-- 把X换成合适的步骤顺序号,比如在PhoneFactor步骤前一步 -->
<OrchestrationStep Order="X" Type="ClaimsExchange">
  <ClaimsExchanges>
    <ClaimsExchange Id="ValidatePhoneForMFA" TechnicalProfileReferenceId="REST-ValidateNonVOIPPhone" />
  </ClaimsExchanges>
</OrchestrationStep>

确保这个REST技术配置里,要是检测到VOIP号码,直接返回错误,让流程卡住,提示用户换非VOIP号码。

3. 基于mfa-email-or-phone示例调整

如果是用那个邮箱/手机号二选一的示例改,直接砍掉邮箱选项:

  • 删除示例里让用户选邮箱或手机号的步骤,直接跳转到手机号输入页面
  • 在用户输入手机号后,立刻调用上面的非VOIP验证API,过了再走PhoneFactor验证

4. 测试验证

拿个VOIP号码试试MFA,确认会被拦截;再用正常手机号测试,确保能顺利完成验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:41:01