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

Azure B2C自定义策略中TOTP MFA二维码无法显示问题求助

Azure B2C TOTP MFA 生产环境二维码不显示及链接丢失问题解决

问题现象

开发环境中基于二维码的TOTP MFA功能正常,但迁移到生产环境后:

  • 二维码无法加载显示
  • Google Play和App Store的下载链接丢失
  • 浏览器控制台报错:"Uncaught Error: code length overflow. (1580>1056)"
  • 即使使用GitHub官方TOTP策略示例在新B2C实例测试,仍出现相同问题

根因分析

该报错是由于生成的TOTP认证URI字符长度超过了默认QR码版本的容量上限(1056字符)。生产环境中,租户完整域名(如带.onmicrosoft.com后缀的域名)或用户标识符过长,导致拼接后的URI长度超标,进而引发QR码生成失败,连带影响页面上的下载链接渲染。

解决方案

1. 缩短Issuer字段

在自定义策略的TOTP技术配置中,将<Issuer>的值改为简短名称,避免使用完整租户域名:

  • 定位到策略中类似<TechnicalProfile Id="TOTPSetup">的节点
  • 在其<Metadata>节点下修改<Item Key="Issuer">的值,例如将your-tenant-name.onmicrosoft.com改为YourTenant

2. 优化用户标识符(Account字段)

避免使用过长的用户标识(如完整用户主体名),改用更精简的字段:

  • 可使用用户邮箱前缀,或提前定义自定义声明传递简短用户ID
  • 示例:将{userPrincipalName}替换为{extension_shortUserId}

3. 验证URI长度

修改后手动拼接TOTP URI并检查字符数,确保不超过1056字符。URI格式示例:
otpauth://totp/Issuer:Account?secret=XXXX&issuer=Issuer&algorithm=SHA1&digits=6&period=30

4. 独立渲染下载链接

确认自定义UI页面中,下载链接的渲染逻辑不依赖QR码生成的成功状态,避免因QR码生成失败导致链接被隐藏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:24:27