使用AdminSetUserMFAPreferenceRequest无法为AWS Cognito用户启用邮箱MFA
启用AWS Cognito邮箱MFA的正确方式
和SMS MFA的实现逻辑完全一致,你可以直接用AdminSetUserMFAPreferenceRequest搭配EmailMfaSettingsType类来配置邮箱MFA,不需要额外方案。
必要前提
- 你的Cognito用户池已经在MFA配置中开启了邮箱MFA作为可选MFA类型
- 目标用户的邮箱地址已经完成验证(否则启用邮箱MFA会失败)
代码示例
以下是单独启用邮箱MFA并设为首选的代码:
AdminSetUserMFAPreferenceRequest mfaRequest = new AdminSetUserMFAPreferenceRequest() .withUserPoolId(userPoolId) .withUsername(username) .withEmailMfaSettings( new EmailMfaSettingsType().withEnabled(true) .withPreferredMfa(true) );
如果需要同时保留SMS MFA并将邮箱设为首选,只需要同时传入两种MFA的配置:
AdminSetUserMFAPreferenceRequest mfaRequest = new AdminSetUserMFAPreferenceRequest() .withUserPoolId(userPoolId) .withUsername(username) .withSMSMfaSettings( new SMSMfaSettingsType().withEnabled(true) .withPreferredMfa(false) ) .withEmailMfaSettings( new EmailMfaSettingsType().withEnabled(true) .withPreferredMfa(true) );
常见问题排查
- 用户池是否真的开启了邮箱MFA(在Cognito控制台的"用户池属性"->"MFA和验证"里确认)
- 用户的邮箱状态是否为"已验证"(可以通过
AdminGetUserRequest查询用户详情) - 调用接口的IAM角色是否具备
cognito-idp:AdminSetUserMFAPreference权限
内容的提问来源于stack exchange,提问作者Bhagyashree Marekar
相关产品推荐
相关产品推荐

