Azure AD B2C用户需两次MFA验证问题排查求助
Azure AD B2C 重复MFA验证问题分析与排查建议
问题现象与日志分析
用户反馈部分登录场景需要完成两次MFA验证,查看审计日志可发现异常流程与正常流程的核心差异:
- 异常流程(09:54:54发起):存在两个独立的登录会话(不同
CorrelationId):correlationId_111流程:完成本地凭证验证→生成OTP→验证OTP成功→发放授权码,流程已完整结束- 紧接着触发
correlationId_222流程:重新生成OTP→用户首次验证失败→再次验证成功→发放授权码→交换token
- 正常流程(13:50:51发起):所有步骤集中在同一个
correlationId_444会话内,无额外登录触发
核心推断
两次MFA验证对应两个独立的登录请求,大概率是调用登录流程的应用端触发了第二次登录请求,符合你推测的「应用处理authorization code时触发新登录请求」的方向。
排查建议
- 检查应用的授权码处理逻辑:确认是否在获取到第一个授权码后,因重复跳转、错误的状态(state)校验、会话初始化逻辑异常等原因,再次发起了完整的OAuth2.0/OpenID Connect登录请求
- 导出应用端的请求日志:梳理请求时序,重点查看在收到第一个授权码(09:55:19)到第二个OTP生成(09:55:20)之间,应用是否向Azure AD B2C发起了新的登录初始化请求
- 验证授权码交换环节:虽然日志中token交换最终成功,但需确认应用在第一次交换授权码时是否出现短暂异常(如网络波动、参数传递错误),导致应用判定登录未完成而重新触发流程
- 检查应用的会话管理机制:排查是否存在会话丢失、用户状态重置等情况,导致应用重复触发登录流程
- 若使用自定义B2C策略:确认策略中是否存在可能触发二次验证的逻辑,但结合不同
CorrelationId的特征,此可能性较低,优先排查应用端
审计日志详情
| Date (UTC) | CorrelationId | Service | Category | Activity | Result | ResultReason |
|---|---|---|---|---|---|---|
| 2024/04/23 13:51:14 | [correlationId_555] | B2C | Authentication | Exchange token | Success | N/A |
| 2024/04/23 13:51:14 | [correlationId_444] | B2C | Authentication | Issue an authorization code to the application | Success | N/A |
| 2024/04/23 13:51:12 | [correlationId_444] | B2C | Other | Verify one time password | Success | N/A |
| 2024/04/23 13:50:51 | [correlationId_444] | B2C | Other | Generate one time password | Success | N/A |
| 2024/04/23 13:50:50 | [correlationId_444] | B2C | Authentication | Validate local account credentials | Success | N/A |
| 2024/04/23 09:55:42 | [correlationId_333] | B2C | Authentication | Exchange token | Success | N/A |
| 2024/04/23 09:55:41 | [correlationId_222] | B2C | Authentication | Issue an authorization code to the application | Success | N/A |
| 2024/04/23 09:55:41 | [correlationId_222] | B2C | Other | Verify one time password | Success | N/A |
| 2024/04/23 09:55:24 | [correlationId_222] | B2C | Other | Verify one time password | ClientError | One time password provided for verification is incorrect |
| 2024/04/23 09:55:20 | [correlationId_222] | B2C | Other | Generate one time password | Success | N/A |
| 2024/04/23 09:55:19 | [correlationId_111] | B2C | Authentication | Issue an authorization code to the application | Success | N/A |
| 2024/04/23 09:55:17 | [correlationId_111] | B2C | Other | Verify one time password | Success | N/A |
| 2024/04/23 09:54:55 | [correlationId_111] | B2C | Other | Generate one time password | Success | N/A |
| 2024/04/23 09:54:54 | [correlationId_111] | B2C | Authentication | Validate local account credentials | Success | N/A |
内容的提问来源于stack exchange,提问作者DeMaki
相关产品推荐
相关产品推荐

