我正在使用以下代码,但它不会更改 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 中。
![enter image description here](https://i.stack.imgur.com/cTkmB.png)
更新0:
在应用程序层面,它运行良好。当我启用 MFA 时,我得到了代码,当我禁用它时,我没有得到代码。我的问题是 Cognito Amazon 控制台的 UI 中的 MFA 状态没有变化,如上图所示。
有什么区别admin-set-user-mfa-preference
and set-user-mfa-preference
?
![enter image description here](https://i.stack.imgur.com/5bfqk.png)
set-user-mfa-preference
需要强制使用 token,如下图所示。
但在代码中,我使用了admin-set-user-mfa-preference
这有什么区别吗?
实际上,无论您启用/禁用 SMS MFA 状态,都没有关系。
它根据从应用程序级别发送的状态进行工作。
但我担心的是 ->UI 操作不工作可以吗?
简单的解决方案是以编程方式启用或禁用 MFA,因为我们知道 SMS MFA 的状态不会使用代码更改,因此您可以在用户池上创建自定义状态字段,并根据代码结果更改该字段的值,例如,如果代码启用 MFA,则将字段值更改为已启用,如果代码禁用 MFA,则将字段值更改为禁用,并且如果在后端您需要 MFA 的状态,那么您可以从您创建的自定义字段中获取值,并根据以下内容维护字段值你的代码......对我来说它是救星。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)