这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
按风险触发
一刀切的代价
如果 MFA 每次登录都触发,用户会崩溃——尤其对高频使用场景,多一步验证就多一分流失。但完全不触发,安全又无从谈起。
答案是把验证强度跟随风险,这就是自适应 MFA(Adaptive / Risk-based MFA)。
触发原则
低风险场景少打扰,高风险场景强验证。下面是我实际使用的触发矩阵:
自适应认证
验证强度跟随风险,而不是一刀切
常用设备、常用地域登录账号 + 密码即可,不额外打扰
低风险直接放行
新设备首次登录邮箱 / 短信验证码,确认设备归属
中风险验证码确认
异地登录 / IP 突变要求 TOTP / WebAuthn 或手机确认
中风险MFA 二次验证
修改密码、邮箱、手机号身份信息变更前必须强验证
高风险MFA + 重新认证
提现、删除数据、生成 API Key高风险操作先升级信任,必要时暂缓
高风险MFA + 风险阻断
通过 MFA 后给会话记录
assurance_level = high,
在有效期内执行敏感操作不必重复验证;超过有效期或风险变化后再要求重新验证。
自适应 MFA 的组成
一个可落地的自适应 MFA 需要三块:
1. 风险信号采集
登录 / 操作时收集信号:
- 设备指纹(是否新设备、是否常用设备)。
- 地理位置(是否常用地域、IP 是否异常)。
- 行为特征(时段、频率、是否代理)。
- 操作敏感度(读操作 vs 提现)。
2. 风险决策
把信号综合成一个风险等级(low / medium / high),决定要不要升级验证、升到哪一级。可以规则简单起步,再逐步上风控模型。
3. 会话信任等级
验证通过后,把结果记到会话上:
session.assurance_level = high
mfa_verified_at = now
这样接下来一段时间内,用户执行敏感操作不必重复验证;超过有效期或风险变化后,再要求重新验证。
体验与安全的平衡点
自适应 MFA 不是「越严格越好」,而是:
- 常用设备、常用地域:尽量顺滑,别打扰。
- 第一次新设备:验证码确认即可。
- 异地 / 高风险操作:升级到 TOTP / WebAuthn。
- 确凿异常:阻断并通知。
一个常见的坑
自适应 MFA 依赖风险信号,但如果信号太少(比如只按 IP),会误伤或漏判。信号要多样化,并且要有降级策略:风控系统不可用时,宁可临时提高验证门槛,也不要全部放行。
小结
- 自适应 MFA = 风险信号 + 决策 + 会话信任等级。
- 把额外摩擦放在风险最高的地方。
- 通过 MFA 后给会话记录
assurance_level,避免重复打扰。 - 风控不可用时要有降级兜底。
下一节看 MFA 的最后一环:用户丢了手机怎么办——恢复机制。
发现内容有问题?
告诉我们哪里需要改进。
