当前位置: 首页 > 知识库问答 >
问题:

如何在Java中以编程方式为AWS认知用户池中的日志用户启用或禁用MFA?

申思远
2023-03-14

我正在使用下面的代码,但它没有更改AWS中的任何内容,尽管它没有返回文档中所述的任何内容。https://docs.aws.amazon.com/cognito-user-identity-pools/latest/apireference/api_adminsetusermfapreference.html

public boolean changeMfaStatus(String username, Boolean status) {
    final SMSMfaSettingsType smsMfaSettings = SMSMfaSettingsType.builder()
            .preferredMfa(true)
            .enabled(true)
            .build();
    final AdminSetUserMfaPreferenceRequest setUserMFAPreferenceRequest = AdminSetUserMfaPreferenceRequest.builder()
            .userPoolId(userPoolID)
            .smsMfaSettings(smsMfaSettings)
            .username(username)
            .build();
    LOG.warn(setUserMFAPreferenceRequest);
    try {
        cognitoClient.adminSetUserMFAPreference(setUserMFAPreferenceRequest);
    } catch (Exception e) {
        LOG.warn(e);
        return false;
    }
    return true;
}

更新:实际上,这段代码更改了SMS MFA状态,但是在Cognito用户池的UI中看不到这些更改。与AWS-CLI中的内容相同,它也会更改状态,但不会在UI中更改。

UPDATE-0:在应用程序级别,它工作得很好。当我启用MFA时,我得到了代码,当我禁用它时,我得不到代码。我的问题是MFA状态在Cognito Amazon控制台的UI中没有改变,如上图所示。

实际上,无论您是否启用/禁用SMS MFA状态,都无关紧要。它根据从应用程序级别发送的状态工作。

但我担心的是->UI的操作不工作可以吗?

共有1个答案

尹钱青
2023-03-14

有几件事可能会出错。我的猜测是,您没有phone_number,所以不可能发生MFA。但您可能会发现以下任一项:

  1. lambda/application没有更改MFA的权限
  2. 用户没有phone_number
  3. 用户池MFA未设置为选择加入或必需
  4. 访问MFA消息的SNS所需角色用户池未设置
  5. SNS短信预算未超过默认的1美元
  6. 缺少phone_number_verificed或email_verificed(您似乎有电子邮件)

你可能是1-3之一,其他只是其他的东西,我发现当与Cognito工作。

 类似资料:
  • 有人知道我们是否可以增加1000s用户池的限制吗?

  • 我有一个AWS认知用户池,我试图在Android应用程序上添加Facebook登录。我的应用程序目前成功登录到facebook,但没有在我的用户池中创建用户。我已经按照这里的指示去做了

  • 我想使用Cognito用户池作为标识提供者。我对我的用户进行身份验证。然后,我尝试通过以下步骤将该用户与用户池中的用户集成: http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integration-user-pools-with-identity-pools.html 我已经用绳子代替了敏感的部分。我已

  • https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-saml-idp.html https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-integrating-3d-party-saml-provid

  • 如何在后端管理(删除)AWS Cognito中的用户(使用节点)?

  • 问题内容: 我想在注册过程结束后立即登录用户,而无需通过登录表单。 这可能吗 ?我已经找到了的解决方案,但是我没有在我实际从事的项目中使用它。 这是我的security.yml,我正在使用两个防火墙。纯文本编码器仅用于测试。 问题答案: 是的,您可以通过类似于以下内容的方式执行此操作: 当您在上下文中设置令牌时,最后不会自动触发事件,而通常在使用登录表单或类似方法时触发。因此,将其包含在此处的原因