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

在Azure ADB2C自定义策略中拆分MFA手机号为国家码与号码

Azure AD B2C自定义策略拆分MFA手机号

方案1:生成带空格的格式化手机号

原始手机号格式为(+91345234223),可通过声明转换提取括号内内容并插入空格分隔国家码与手机号:

  1. 添加声明定义
    在ClaimsSchema节点下新增存储格式化手机号的声明:
<ClaimType Id="formattedMfaPhone">
  <DisplayName>Formatted MFA Phone Number</DisplayName>
  <DataType>string</DataType>
</ClaimType>
  1. 添加声明转换规则
    在ClaimsTransformations节点下添加两个转换:
  • 提取括号内的纯手机号(去除前后括号):
<ClaimsTransformation Id="ExtractPhoneFromParentheses" TransformationMethod="ExtractClaimByRegex">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="regex" Value="\((.*)\)" />
    <InputParameter Id="matchGroup" Value="1" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="extractedPhone" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 在国家码后插入空格(匹配+开头的1-3位国家码,后续添加空格):
<ClaimsTransformation Id="InsertSpaceInPhone" TransformationMethod="ReplaceClaimValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extractedPhone" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="pattern" Value="(\+[0-9]{1,3})([0-9]+)" />
    <InputParameter Id="replacement" Value="$1 $2" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="formattedMfaPhone" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  1. 在技术配置文件中调用转换
    找到处理MFA的TechnicalProfile(如PhoneFactor-Input或自定义MFA验证Profile),在OutputClaimsTransformations节点下添加上述转换:
<OutputClaimsTransformations>
  <OutputClaimsTransformation ReferenceId="ExtractPhoneFromParentheses" />
  <OutputClaimsTransformation ReferenceId="InsertSpaceInPhone" />
</OutputClaimsTransformations>
  1. 将格式化手机号加入令牌
    在RelyingParty节点的OutputClaims中添加:
<OutputClaim ClaimTypeReferenceId="formattedMfaPhone" />

方案2:拆分到独立的国家码和手机号声明

若需将国家码与手机号分别存入独立声明,调整如下:

  1. 添加声明定义
    在ClaimsSchema新增两个声明:
<ClaimType Id="mfaCountryCode">
  <DisplayName>MFA Country Code</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="mfaPhoneNumber">
  <DisplayName>MFA Phone Number</DisplayName>
  <DataType>string</DataType>
</ClaimType>
  1. 添加声明转换规则
    保留ExtractPhoneFromParentheses转换,新增两个提取规则:
  • 提取国家码:
<ClaimsTransformation Id="ExtractCountryCode" TransformationMethod="ExtractClaimByRegex">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extractedPhone" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="regex" Value="(\+[0-9]{1,3})" />
    <InputParameter Id="matchGroup" Value="1" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="mfaCountryCode" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 提取纯手机号(去除国家码):
<ClaimsTransformation Id="ExtractPurePhoneNumber" TransformationMethod="ExtractClaimByRegex">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extractedPhone" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="regex" Value="\+[0-9]{1,3}([0-9]+)" />
    <InputParameter Id="matchGroup" Value="1" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="mfaPhoneNumber" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  1. 调用转换并加入令牌
    在TechnicalProfile的OutputClaimsTransformations中添加:
<OutputClaimsTransformations>
  <OutputClaimsTransformation ReferenceId="ExtractPhoneFromParentheses" />
  <OutputClaimsTransformation ReferenceId="ExtractCountryCode" />
  <OutputClaimsTransformation ReferenceId="ExtractPurePhoneNumber" />
</OutputClaimsTransformations>

然后在RelyingParty的OutputClaims中加入两个声明:

<OutputClaim ClaimTypeReferenceId="mfaCountryCode" />
<OutputClaim ClaimTypeReferenceId="mfaPhoneNumber" />

注意事项

  • 正则\+[0-9]{1,3}可覆盖大多数常见国家码场景,若有特定国家码需求,可调整正则匹配规则。
  • 确保strongAuthenticationPhoneNumber是ADB2C返回的原始MFA手机号声明,若策略中使用其他声明ID,需对应替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:56:12