Я использую 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})
}
});
})