能否基于AWS Cognito实现按需触发MFA的step-up认证?
Cognito 阶梯式MFA落地方案验证(适配AWS Amplify技术栈)
核心需求梳理
- 技术栈基础:采用AWS Amplify及全套AWS基础设施搭建客户业务方案
- 基础认证逻辑:使用Cognito User Pools完成邮箱+密码的基础登录,全程不接入联合登录、OpenID登录流程
- MFA触发规则:参考通用Step-Up阶梯认证逻辑,不在用户完成基础登录时强制要求MFA校验,仅当用户访问敏感信息、调用工具类资源等特定高权限操作时,才触发MFA二次校验,绝大多数仅需常规数据读写的用户不需要走完MFA流程
- 权限兜底要求:无论用户是否完成MFA校验,都需要保障其可以正常访问DynamoDB及其他常规AWS服务资源,开展数据读写操作
- 待验证核心问题:上述工作流是否具备落地可行性,能否结合AWS Lambda实现对应的认证控制逻辑
核心可行性结论
你描述的整套工作流完全可以在当前技术栈下落地,AWS Lambda可作为核心逻辑编排组件支撑整个认证流程的运转。
落地实现的核心路径
- Cognito 基础配置层调整
- 将User Pools的MFA模式设置为可选触发,关闭基础登录流程中的强制MFA校验节点,仅为账号保留TOTP/短信MFA的凭据注册能力,不会在用户首次登录、常规会话环节打断操作流程
- 给Cognito签发的会话令牌(IdToken)配置自定义字段,比如
auth_scope,基础登录完成后默认标记为standard;用户完成MFA校验后,重新签发标记为elevated的短期会话令牌
- Lambda的核心能力承载
- 作为API Gateway的Lambda授权器,在请求路由到后端服务前完成令牌校验:针对敏感资源的访问请求,若检测到令牌仅带有
standard权限标识,直接返回自定义的触发MFA错误码,引导前端拉起MFA校验界面,无需走到业务逻辑层 - 作为MFA流程的编排入口,当用户提交MFA凭据后,Lambda调用Cognito的
RespondToAuthChallenge接口完成MFA校验,校验通过后为用户签发带elevated权限的临时会话令牌
- 作为API Gateway的Lambda授权器,在请求路由到后端服务前完成令牌校验:针对敏感资源的访问请求,若检测到令牌仅带有
- 跨服务权限适配
- 搭配IAM策略规则,基于Cognito令牌的自定义字段完成最小权限适配:带
standard标识的令牌,仅授予DynamoDB常规业务表的读写、非敏感资源访问权限,完全不影响用户的常规操作;带elevated标识的令牌,临时追加敏感资源、工具类服务的访问权限,全程不会阻断用户已建立的基础会话
- 搭配IAM策略规则,基于Cognito令牌的自定义字段完成最小权限适配:带
内容的提问来源于stack exchange,提问作者Ronald Treur
相关产品推荐
相关产品推荐

