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

Azure B2C自定义策略:RadioSingleSelect按钮本地化失败求助

解决B2C selfAsserted页面MFA单选按钮本地化问题

核心原因

MFA方式的单选按钮文本并非来自selfAsserted页面的通用本地化字符串,而是直接关联身份提供者(IdP)或MFA方法的定义名称,或者由B2C策略中的ClaimsProvider/TechnicalProfile配置决定。

具体解决步骤

1. 检查MFA TechnicalProfile的Display Name配置

如果是内置MFA方法(如短信、电话、微软Authenticator),需要在策略的<ClaimsProvider>里修改对应TechnicalProfile的DisplayName,并通过本地化文件映射:

  • 在策略XML中找到对应MFA的ClaimsProvider,比如短信MFA:
<ClaimsProvider>
  <DisplayName>Phone factor</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="PhoneFactor-InputOrVerify">
      <DisplayName>短信验证</DisplayName> <!-- 默认显示名,本地化需映射 -->
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>
  • 在本地化文件中添加对应的StringID,注意空格替换为下划线:
<LocalizedString ElementType="ClaimsProvider" StringId="claimsprovider_Phone_factor_technicalprofile_短信验证">替换为你的本地化文本</LocalizedString>

2. 使用自定义UI扩展的JavaScript动态修改

如果上述方法不生效,可通过selfAsserted页面的自定义脚本直接修改单选按钮文本:

  • 在自定义HTML页面的<script>标签中添加逻辑:
document.addEventListener('DOMContentLoaded', function() {
  // 定位MFA单选按钮组
  const radioLabels = document.querySelectorAll('.radioSingleSelect label');
  radioLabels.forEach(label => {
    // 根据默认文本匹配替换
    switch(label.textContent.trim()) {
      case "Text message":
        label.textContent = "本地化短信验证文本";
        break;
      case "Phone call":
        label.textContent = "本地化电话验证文本";
        break;
      case "Microsoft Authenticator":
        label.textContent = "本地化微软验证器文本";
        break;
    }
  });
});
  • 确保自定义UI策略中已启用JavaScript:
<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <UserJourneyBehaviors>
    <ScriptExecution>Allow</ScriptExecution>
  </UserJourneyBehaviors>
</RelyingParty>

3. 验证本地化策略的作用范围

确保本地化文件的Target属性覆盖了selfAsserted页面所在的用户旅程,同时尝试映射ClaimType的显示名:

<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
    <SupportedLanguage>zh-CN</SupportedLanguage>
  </SupportedLanguages>
  <LocalizedResources Id="api.selfasserted.zh-CN">
    <!-- 已有标题本地化 -->
    <LocalizedString ElementType="UxElement" StringId="title">设置首选验证方式</LocalizedString>
    <!-- 尝试映射MFA选项的ClaimType显示名 -->
    <LocalizedString ElementType="ClaimType" StringId="strongAuthenticationMethod">
      <LocalizedClaimTypeDisplayName>本地化选项文本</LocalizedClaimTypeDisplayName>
    </LocalizedString>
  </LocalizedResources>
</Localization>

关键注意事项

  • 优先通过ClaimsProvider的Display Name映射,避免直接修改B2C内置StringID。
  • 测试前清除浏览器缓存,确保加载最新的本地化配置和自定义UI资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:57:09