我有一个Cognito用户池,它的MFA设置为Optional,仅限TOTP。
我正在尝试设置一个页面,该页面将首次为遵循此AWS文档的用户启用MultiFactorAuthentication。
在安装组件时,我生成一个QR代码,并使用qrcode.react将其显示在屏幕上
useEffect(() => {
Auth.currentAuthenticatedUser({ bypassCache: true }).then(user => {
setUser(user);
Auth.setupTOTP(user).then(code => {
const authCode = "otpauth://totp/AWSCognito:" + user.username + "?secret=" + code + "&issuer=ivt";
setQrCode(authCode);
});
});
}, []);
然后,当用户输入时,我验证它并调用setPrefferredMFA。现在,我检查“input”是否正确传递,是否没有问题。
const setupMFA = input => {
Auth.setupTOTP(user).then(() => {
Auth.verifyTotpToken(user, input)
.then(() => {
Auth.setPreferredMFA(user, "TOTP").then(() => {
props.setShowModal(false);
});
})
.catch(e => {
// Token is not verified
});
});
};
我仍然收到代码不匹配和无法启用软件令牌MFA错误,无法为用户设置MFA。
1条答案
按热度按时间mcdcgff01#
我解决了。
验证TotpToken()不应位于setupTOTP的.then()块中。
Pfft.去掉setupMFA函数中的Auth.setupTOTP使它工作起来。