我刚接触过AWS认知,目前有两个问题:
我正在使用Node.js和来实现JavaScript 1
我的应用程序登录流程:
1. At this time, the app hits my API endpoint
2. and in turn, invokes the function to send TOTP if the number is registered
3. User receives the TOTP code via SMS
我已经设法通过短信发送TOTP,但我无法找到一种方法来验证TOTP它,以获得认知令牌。Github页面中显示的sample3使用提示符,因此所有内容都包含在该函数中。但是,在我的情况下,我不能这样做,因为这两个电话需要在两个不同的屏幕上发生。我尝试分离sendMFACode()函数,但是它没有验证TOTP,而是发送了另一个SMS。
到目前为止,我发现的文档/资源有限。
参考资料:
我的用户池设置是'MFA可选‘,所以我可以适应通过电子邮件方法登录(不发送短信通过电子邮件登录。我知道这很奇怪。)到目前为止,我已经使用enableMFA()函数将MFA设置为代码中所需的。然而,Github页面表示,函数enableMFA()现在已被废弃,相反,使用setUserMfaPreference()代替。我尝试过,并获得了一个“成功”,但当我打开它在AWS网络控制台,它仍然声明短信MFA禁用。这里有什么东西我遗漏了吗?
这是我的密码:
cognitoUser.sendMFACode(VerificationCode, {
onSuccess: (result) => {
console.log(result)
},
onFailure: (error) => {
console.log(error)
}
})
debug result:
{
"code": "InvalidParameterException",
"Name": "InvalidParameterException",
"Message" "Invalid Parameter Required Session"
}注意:我收到了无效的params异常,尽管我成功地获得了SMS。
发布于 2019-05-08 15:26:53
目前,我自己也在努力处理MFA过程,但是对于通过SDK启用/禁用MFA的问题,我找到了一种方法,可以让它与下面的代码一起工作。
setUserSettings: (req, res) => {
const { access_token, enable } = req.body;
/* ISOLATE START HERE */
const params = {
AccessToken: access_token,
MFAOptions: [
{
AttributeName: "phone_number",
DeliveryMedium: enable == "true" ? "SMS" : null
}
]
};
cognitoIdentityServiceProvider.setUserSettings(params, (err, data) => {
if (err) {
console.log(err);
res.status(400).json({ message: err.message });
} else {
console.log(data);
res.status(200).json(data);
}
});
/* ISOLATE END HERE */
},这是使用Node和Express。您可以隔离主要功能,并使其在您喜欢的上下文中工作,我已经标记了用于隔离的代码剪切位置。此调用的文档位于https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html#setUserSettings-property中。
如果我能让MFA正常工作的话,我会回过头来。
https://stackoverflow.com/questions/55979186
复制相似问题