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

AWS Cognito中MFA能否纳入访问令牌?及登录状态识别咨询

AWS Cognito中通过ID Token识别MFA登录状态的配置要点

针对你遇到的amr声明缺失问题,核心原因是这个声明只有在用户完成MFA验证后才会自动出现在ID Token中,同时需要满足几个配置和流程要求:

  • 必须完成MFA验证流程
    不管MFA是强制还是可选,只有当用户在登录时实际完成了MFA验证步骤(比如输入短信验证码或TOTP码),Cognito才会在ID Token中添加amr声明,其中包含mfa值。用StartWithSrpAuthAsync发起登录后,如果用户启用了MFA,Cognito会返回SMS_MFA或SOFTWARE_TOKEN_MFA类型的挑战,你需要调用RespondToAuthChallengeAsync完成验证,此时拿到的ID Token才会包含amr声明。如果用户没启用MFA,或者可选MFA时选择跳过,ID Token里不会有这个字段。

  • 检查应用客户端配置

    1. 确认应用客户端的OAuth范围包含openid——amr是OpenID Connect的标准声明,必须包含openid范围才能在ID Token中返回。
    2. 不要在应用客户端的"ID Token自定义声明"或其他设置中限制默认声明的返回,默认情况下Cognito会自动包含amr(当满足MFA条件时)。
  • 排查预令牌生成Lambda(如果已配置)
    虽然官方文档说明amr声明无法自定义,但如果你的用户池配置了预令牌生成Lambda,要检查代码是否意外修改了response.claimsOverrideDetails,导致默认声明被移除。正常情况下Cognito会保留这个声明,无需额外处理。

  • 测试验证建议
    测试时先确保目标用户已经在Cognito用户池中启用了MFA(比如短信或软件令牌),然后完整走一遍"SRP登录→MFA验证"的流程,拿到ID Token后用JWT解析工具解码,确认amr数组中是否包含mfa值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:42:17