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

如何调整Azure AD B2C自定义策略模板适配手机号+SMS MFA

适配手机号注册+SMS MFA场景的Azure AD B2C账户删除自定义策略

可以对原有的邮箱场景删除账户模板进行适配,以下是具体的修改方向和步骤:

1. 替换身份验证流程为手机号+SMS MFA

原模板基于邮箱登录验证身份,需要将用户旅程中的登录步骤替换为手机号验证+SMS MFA的流程:

  • 移除原有的LocalAccountSigninEmail相关技术配置,替换为支持手机号登录的PhoneFactor技术配置
  • 在用户旅程中添加SMS MFA验证步骤,确保只有完成MFA的用户才能进入账户删除环节

2. 调整用户识别的声明逻辑

因为采用手机号注册,用户的核心标识是signInNames.phoneNumber声明,需要修改用户查找与匹配的逻辑:

  • 在<ClaimsProviders>的用户查找技术配置中,将UserIdentifierClaimType设置为signInNames.phoneNumber,替代原有的email声明
  • 确保声明转换规则中,正确提取和传递手机号作为用户唯一标识

3. 更新UI提示文本

修改策略中的本地化资源,适配手机号场景的界面提示:

  • 将页面中“输入邮箱”类的提示文本替换为“输入手机号”
  • 调整MFA相关的提示文案,明确提示用户通过SMS验证码完成验证

4. 确保删除前的MFA校验逻辑

在用户旅程的步骤顺序中,严格执行“手机号登录 → SMS MFA验证 → 账户删除”的流程:

  • 只有MFA验证成功的用户,才能触发后续的账户删除API调用
  • 若MFA验证失败,直接终止流程并返回错误提示

5. 关键配置示例(核心片段)

修改用户旅程步骤

<UserJourney Id="DeleteMyAccount">
  <OrchestrationSteps>
    <!-- 步骤1:手机号登录 -->
    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      <ClaimsProviderSelections>
        <ClaimsProviderSelection TargetClaimsExchangeId="PhoneFactorExchange" />
      </ClaimsProviderSelections>
    </OrchestrationStep>
    <!-- 步骤2:SMS MFA验证 -->
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="PhoneFactorExchange" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" />
      </ClaimsExchanges>
    </OrchestrationStep>
    <!-- 步骤3:执行账户删除 -->
    <OrchestrationStep Order="3" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="AADUserDeleteExchange" TechnicalProfileReferenceId="AAD-UserDelete" />
      </ClaimsExchanges>
    </OrchestrationStep>
    <!-- 步骤4:返回删除成功结果 -->
    <OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
  </OrchestrationSteps>
</UserJourney>

更新用户查找技术配置

<TechnicalProfile Id="AAD-UserReadUsingPhoneNumber">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="signInNames.phoneNumber" PartnerClaimType="signInNames.phoneNumber" Required="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="signInNames.phoneNumber" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:01:19