#node.js #amazon-web-services #amazon-cognito #aws-amplify
#node.js #amazon-веб-сервисы #amazon-cognito #aws-amplify
Вопрос:
Я использую reactjs и node на стороне сервера.
Как вы можете видеть в приведенной ниже части кода «требуется mfa», если все это находится на узле, то я действительно не могу «запросить» у пользователя код, я должен передать это обратно во внешний интерфейс.
Пробованное решение: Если я передам требуемый MFA во внешний интерфейс и получу ввод пользователя, а затем отправлю его обратно на узел для вызова «RESPOND Auth», я получаю два кода MFA в своем SMS-сообщении.
Пробовал ли я другие решения? Я не решаюсь использовать amplify, потому что все находится на интерфейсе, в идеале я хотел бы выполнить свою аутентификацию на серверной части (таким образом, node). Другой вариант, к которому я склоняюсь, — это просто использовать 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})
}
});
})
Комментарии:
1. Я также ищу аналогичный подход, то есть аутентификацию mfa в nodejs путем сбора кода проверки из интерфейса, итак, вы нашли какое-либо решение?
2. есть какие-либо обновления по этому поводу? @rio