Усилить и отреагировать : Несоответствие кода и сбой включения программного токена MFA

#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 заставило ее работать.