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

如何创建无需验证的Azure AD B2C手机号注册及登录流程?

实现Azure AD B2C手机号+密码注册(无强制验证)与登录流程

核心前提

默认用户流程强制要求手机号验证,无法直接修改,必须通过**自定义策略(Identity Experience Framework)**实现需求。


一、注册流程配置(无强制手机号验证)

  1. 基于起始包创建自定义策略
    从Microsoft官方的自定义策略起始包(如SocialAndLocalAccounts)入手,在此基础上修改,避免从零构建的复杂度。

  2. 调整用户属性收集规则
    在TrustFrameworkBase.xml中,确认mobilePhone被定义为可收集的用户属性,且不设置为"必须验证"类型。示例片段:

    <ClaimType Id="mobilePhone">
      <DisplayName>Mobile Phone</DisplayName>
      <DataType>string</DataType>
      <UserHelpText>Your mobile phone number</UserHelpText>
      <UserInputType>TextBox</UserInputType>
      <!-- 移除或注释掉验证规则 -->
      <!-- <Restriction>
        <Pattern RegularExpression="^[0-9]{10,15}$" HelpText="Enter a valid mobile phone number"/>
      </Restriction> -->
    </ClaimType>
    
  3. 修改注册页面与流程逻辑

    • 在TrustFrameworkLocalization.xml中,更新注册表单的文本提示,明确为"手机号+密码"注册,删除所有与"验证手机号"相关的提示语。
    • 在TrustFrameworkExtensions.xml中,修改注册用的技术配置文件,移除触发手机号验证的步骤。例如,将原有的PhoneFactor-InputOrVerify替换为仅收集手机号的配置,无需调用短信验证端点。
  4. 更新用户旅程
    调整注册用户旅程,确保收集完手机号、密码等信息后,直接执行用户创建操作,跳过任何手机号验证的步骤。


二、手机号+密码登录流程配置

  1. 配置手机号作为登录标识符
    在TrustFrameworkExtensions.xml中,修改登录技术配置文件,允许用户输入手机号,将其与用户目录中的mobilePhone属性进行匹配。

  2. 调整认证逻辑
    添加基于手机号的登录ClaimsProvider,结合密码验证逻辑,无需额外的短信验证步骤。示例核心逻辑片段:

    <ClaimsProvider>
      <DisplayName>Local Account</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="LocalAccountSigninWithPhone">
          <DisplayName>Phone Number SignIn</DisplayName>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="UserMessageIfClaimsPrincipalDoesNotExist">We can't seem to find your account</Item>
            <Item Key="UserMessageIfInvalidPassword">Your password is incorrect</Item>
          </Metadata>
          <InputClaims>
            <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="username" DefaultValue="{OIDC:LoginHint}"/>
            <InputClaim ClaimTypeReferenceId="password"/>
          </InputClaims>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="objectId"/>
            <OutputClaim ClaimTypeReferenceId="mobilePhone"/>
          </OutputClaims>
          <ValidationTechnicalProfiles>
            <ValidationTechnicalProfile ReferenceId="login-NonInteractive"/>
          </ValidationTechnicalProfiles>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. 更新登录用户旅程
    在登录用户旅程中添加手机号+密码的登录选项,让用户可以选择用手机号替代邮箱/用户名进行登录。


关键注意事项

  • 测试时使用自定义策略的专属测试链接,确认注册流程无需验证手机号即可完成,登录流程可通过手机号+密码正常认证。
  • 若后续需要补充手机号验证,可在用户登录后添加可选验证步骤,或在特定场景下触发验证流程,不影响当前的注册登录逻辑。
  • 确保mobilePhone属性在用户注册时被正确写入Azure AD B2C用户目录,否则登录时无法匹配用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:02:00