AWS Cognito:取消登录OTP,仅注册时发送(USER_PASSWORD_AUTH流)
取消USER_PASSWORD_AUTH登录环节OTP验证,仅保留注册时发送OTP的配置方案
针对你使用USER_PASSWORD_AUTH认证流程,希望取消登录OTP、仅注册时发送验证码的需求,以下是具体操作步骤(以AWS Cognito为例,这是该认证流程的典型应用场景):
1. 调整用户池MFA全局配置
- 进入Cognito控制台,定位到你的目标用户池
- 切换到MFA和验证标签页
- 在「多重身份验证(MFA)」区域,选择关闭选项。这一步是核心——登录环节的OTP本质是MFA验证,全局关闭后所有用户登录时都不会触发OTP要求
- 注意:如果用户池曾设置「用户必须设置MFA」,务必同时关闭该选项,否则已有开启MFA的用户登录仍会被要求验证
2. 保留注册环节的OTP验证配置
- 同样在MFA和验证标签页,找到「验证消息」区域
- 确认注册流程的验证方式已配置为「发送验证码到邮箱/电话」(根据你的用户属性选择对应渠道)
- 这里的OTP是用于验证用户注册时提供的邮箱/手机号真实性(即标记
email_verified或phone_number_verified属性),和登录MFA是独立的两个配置,只要保留此设置,注册时就会自动发送验证码
3. 检查客户端代码逻辑(若涉及)
- 如果使用Cognito SDK调用认证接口,确保客户端的authFlow参数仍为
USER_PASSWORD_AUTH,不要额外添加MFA相关的触发逻辑 - 检查
InitiateAuth等登录接口的处理代码,移除任何强制触发MFA验证的分支逻辑
4. 测试验证
- 使用已注册用户发起登录请求,确认无需输入OTP即可直接完成登录
- 注册新用户,确认会收到OTP验证码,完成验证后才能成功创建用户
额外注意事项
- 若部分用户已手动开启MFA,需要批量或单独关闭这些用户的MFA状态(可通过Cognito控制台、CLI或SDK的
AdminSetUserMFAPreference接口操作) - 注册环节的OTP验证属于用户属性验证,而非MFA,两者互不干扰,只需确保前者的配置保留即可
内容的提问来源于stack exchange,提问作者vjflcr
相关产品推荐
相关产品推荐

