首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >认知登录MFA短信验证问题

认知登录MFA短信验证问题
EN

Stack Overflow用户
提问于 2019-05-04 03:24:36
回答 1查看 2.9K关注 0票数 2

我刚接触过AWS认知,目前有两个问题:

  1. 在使登录使用MFA短信工作。
  2. 将SMS MFA标志设置为已启用/禁用

我正在使用Node.js和来实现JavaScript 1

我的应用程序登录流程:

  1. 用户提交一个移动电话号码(然后重定向到TOTP验证表)
代码语言:javascript
复制
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

  1. 用户输入TOTP代码
    1. 这个应用程序到达了我的API端点
    2. 然后调用函数来验证TOTP。

  1. 如果TOTP验证,那么我的API将向应用程序返回Cognito令牌

我已经设法通过短信发送TOTP,但我无法找到一种方法来验证TOTP它,以获得认知令牌。Github页面中显示的sample3使用提示符,因此所有内容都包含在该函数中。但是,在我的情况下,我不能这样做,因为这两个电话需要在两个不同的屏幕上发生。我尝试分离sendMFACode()函数,但是它没有验证TOTP,而是发送了另一个SMS。

到目前为止,我发现的文档/资源有限。

参考资料:

  1. https://github.com/aws-amplify/amplify-js/tree/master/packages/amazon-cognito-identity-js
  2. https://github.com/amazon-archives/amazon-cognito-identity-js/blob/master/src/CognitoUser.js
  3. https://stackoverflow.com/a/51394500

我的用户池设置是'MFA可选‘,所以我可以适应通过电子邮件方法登录(不发送短信通过电子邮件登录。我知道这很奇怪。)到目前为止,我已经使用enableMFA()函数将MFA设置为代码中所需的。然而,Github页面表示,函数enableMFA()现在已被废弃,相反,使用setUserMfaPreference()代替。我尝试过,并获得了一个“成功”,但当我打开它在AWS网络控制台,它仍然声明短信MFA禁用。这里有什么东西我遗漏了吗?

这是我的密码:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2019-05-08 15:26:53

目前,我自己也在努力处理MFA过程,但是对于通过SDK启用/禁用MFA的问题,我找到了一种方法,可以让它与下面的代码一起工作。

代码语言:javascript
复制
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正常工作的话,我会回过头来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55979186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档