#reactjs #amazon-web-services #amazon-cognito #multi-factor-authentication #amplify
Вопрос:
У меня есть пул пользователей Cognito, для которого MFA установлено значение Необязательно только для TOTP.
Я пытаюсь настроить страницу, которая впервые включает многофакторную аутентификацию для пользователя, следуя этой документации AWS.
По мере монтирования моего компонента я генерирую 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 "amp;issuer=Invent";
setQrCode(authCode);
});
});
}, []);
Затем, когда пользователь вводит данные, я проверяю их и вызываю setPrefferredMFA. Теперь здесь я проверил, правильно ли передан «ввод», и никаких проблем там нет.
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:
Я решил эту проблему.
Функция Auth.verifyTotpToken() не должна находиться в блоке .then() setupTOTP.
Пффф. Удаление Auth.setupTOTP в функции setupMFA заставило ее работать.