Если MFA включен в AWS cognito, нужно ли создавать js на стороне клиента для вызова cognitoUser.authenticateUser () из-за запроса кода? - PullRequest
0 голосов
/ 30 марта 2019

Я использую responsejs и узел для серверной стороны.

Как вы можете видеть в части кода "mfa required" ниже, если это все на узле, то я не могу это сделать "запросите у пользователя код, я должен передать его обратно в интерфейс.

Пробное решение: Если я передаю MFA, необходимый для внешнего интерфейса, и получаю пользовательский ввод, то отправляю его обратно на узел для вызова «responseToAuth». Я получаю два кода MFA в своем SMSmessage.

Пробовал ли я другие решения? Я не решаюсь использовать ampify, потому что все находится на переднем конце, в идеале я хотел бы выполнить свою аутентификацию на внутреннем конце (таким образом, на узле),Другой вариант, к которому я склоняюсь, это просто использовать initiateAuth api вместо "cognitoUser.AuthenticateUser".Таким образом, я могу получить ответ на вызов и передать его в последовательности.Но что касается моего первоначального вопроса, мне интересно, смогу ли я реализовать приведенный ниже код и иметь возможность направлять пользователей для ввода кода MFA (без дублирования SMS-сообщения MFA)

AWS.config.update({
  region: process.env.Region
});
var AmazonCognitoIdentity = require('amazon-cognito-identity-js');

const poolData = { //--Moved to env variables
  UserPoolId: process.env.UserPoolId, // your user pool id here
  ClientId: process.env.ClientId // your app client id here
};
const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);


router.post('/api/authenticateuser', (req, res) => {
  const val = req.body;
  var userData = {
    Username: val.value.user, // your username here
    Pool: userPool
  };
  var authenticationData = {
    Username: val.value.user, // your username here
    Password: val.value.pass, // your password here
  };
  const authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
  const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
  cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function(result) {
      console.log('You are now logged in.');
      console.log(result);
      const accessToken = result.getAccessToken().getJwtToken();

      const idToken = result.getIdToken().getJwtToken();
      res.json({
        accessToken,
        idToken
      });
    },
    onFailure: function(err) {
      res.json(err);
    },
    mfaRequired: function(codeDeliveryDetails) {
      // console.log("mfa enabled");

      // var verificationCode = prompt('Please input verification code' ,'');
      // cognitoUser.sendMFACode(verificationCode, this);

      // res.json({ MFA:codeDeliveryDetails})
    }
  });
})
...