Node.js 双重身份验证

Posted

技术标签:

【中文标题】Node.js 双重身份验证【英文标题】:Node.js Two-Factor Authentication 【发布时间】:2018-01-26 01:14:49 【问题描述】:

我正在开发一个使用 node.js 的个人程序,该程序专门为 Steam 应用程序使用身份验证。登录从外部 .txt 文件读取用户名和密码,它使用数组定位工作,由“:”(冒号)分隔。现在这是我需要帮助的地方。对于某些帐户,Steam 使用由时间在移动应用程序上或通过电子邮件随机生成的两因素代码。此时,我有我的程序,因此它会检查帐户是否启用了身份验证代码,如果有,我会提示手动输入适当的两因素代码。我知道有一种方法可以合并我的程序来提取此身份验证代码并将其放入,而无需用户手动执行此操作,但我不知道从哪里开始。

问题:我希望程序提取随机生成的代码并自动设置它,而无需手动执行任何操作。

代码如下:

else if (eresult === Steam.EResult.AccountLoginDeniedNeedTwoFactor)
 
    login.two_factor_code = readline.question(`[$param[0]] Mobile auth code: `);
    client.disconnect();
    client.connect();
      
else if (eresult === Steam.EResult.AccountLogonDenied) 

   login.auth_code = readline.question(`[$param[0]] Steam Guard code: `);
   client.disconnect();
   client.connect();

谢谢。

【问题讨论】:

【参考方案1】:

双因素身份验证 (2FA) 是通过两个单独因素授权您访问资源的原则。 1. 你知道的东西(登录/通过) 2. 你有的东西(安装了 2FA 应用程序的手机,比如 Google Authenticator、Authy,我还认为 Steam 有一个应用程序)。

如果我理解正确 - 您想在应用中存储密码和 2FA 详细信息。可能有一种技术方法可以做到这一点,但我不会使用这样的应用程序。这是一个很大的安全禁忌。最好每次都要求您的应用程序的用户提供登录名/密码,如果 Steam API 要求第二个因素 - 请向用户询问。

正如我看到的大多数 API - 您可能会获得一个特殊的令牌,这样用户就不必每次都登录并提供代码,而无需存储密码等。在文档中挖掘 - 您会找到它。 (除非您不使用任何官方 Steam API,但它看起来像您可能使用的代码)

【讨论】:

这个程序实际上是循环登录多个账户,从一个.txt文档中读取用户名和密码,但是有可能.txt中的一个甚至多个账户带有两个启用因素身份验证。现在我让我的程序确认这一点并提示问题让用户手动输入,但我想要的是让我的程序为启用它的任何帐户提取两个因素代码并自动输入代码。但是感谢您的评论,我从未想过要尝试为帐户查找特殊令牌。 在 OTP security.stackexchange.com/a/47904/18504 上查看此主题 假设您可以获取种子数据,您想要的似乎是可能的(我不是专家,但我想这是 QR设置 2FA 时向您显示的代码,因此在 Steam 帐户中它通常早已消失)。

以上是关于Node.js 双重身份验证的主要内容,如果未能解决你的问题,请参考以下文章

node.js 的用户身份验证库?

Node.js E00007 Authorize.net 错误 - 由于身份验证值无效,用户身份验证失败

node.js 客户端中的 Windows 集成身份验证

使用 Stripe 订阅 Node.js 进行身份验证

Node.js - JWT、API:如何实现多个 Passport.js 身份验证中间件?

如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?