如何实现需MFA验证码的Azure AD身份验证自动化?
针对Azure AD MFA的程序化Authenticator实现方案
你需要的能力完全可以实现,不需要修改现有登录流程。Azure AD的MFA验证采用的是标准TOTP(基于时间的一次性密码)协议,和移动端Authenticator应用的生成逻辑完全一致,你正在使用的otpauth工具包已经可以覆盖注册、测试全流程的需求。
注册环节实现逻辑
你在为测试用户开启Azure AD MFA时,会得到对应的MFA密钥种子,这个密钥是生成验证码的核心凭证:
- 手动创建测试用户时,可直接在Azure AD后台MFA配置页导出Base32格式的密钥种子,无需扫描二维码
- 如需自动化批量注册测试用户,可调用Azure AD Graph API完成MFA开通并同步获取密钥种子,拿到密钥后存入测试专用的安全配置项即可
自动化测试实现逻辑
在E2E测试流程走到MFA验证步骤时,直接用你存储的测试用户密钥调用otpauth生成实时验证码即可,示例代码如下:
import * as OTPAuth from "otpauth"; // 初始化对应测试用户的TOTP实例 const testTotp = new OTPAuth.TOTP({ issuer: "Azure AD", label: "测试用户邮箱", algorithm: "SHA1", digits: 6, period: 30, // 替换为你存储的对应测试用户的Base32格式MFA密钥 secret: OTPAuth.Secret.fromBase32("YOUR_TEST_USER_MFA_SECRET"), }); // 生成当前可用的6位MFA验证码 const currentMfaCode = testTotp.generate();
注意事项
- 测试用户的MFA密钥必须妥善存储在测试环境专用的加密配置中,禁止硬编码到测试代码,避免泄露安全风险
- 该方案仅适用于测试环境的专用测试账号,禁止用于生产用户的MFA处理
- 生成验证码后直接填入对应输入框提交即可,无需额外适配现有Azure AD登录流程
内容的提问来源于stack exchange,提问作者Ivan Koshelev
相关产品推荐
相关产品推荐

