生成可以重用的测试QRCode

时间:2018-03-13 17:32:41

标签: javascript two-factor-authentication google-authenticator speakeasy

我正在使用此库进行2因素身份验证:https://github.com/speakeasyjs/speakeasy

我正在使用此QR码库:https://www.npmjs.com/package/qrcode

在开发模式下,我使用测试用户为数据库设定种子。但是我在一个团队中,现在已经实现了2FA,人们需要传入一个2FA令牌来登录该用户。有没有办法为这个测试用户生成一个可以被团队中的每个人重用的QR码?这样,他们只需将其扫描到手机中即可使用令牌。

我尝试了天真的方式:我生成了一个QR码,将其保存为图像,并将其放入自述文件中。它对我来说很好,但是当其他人试图扫描它时,它会在google auth中显示“无效条形码”。令人困惑的是我可以从谷歌身份验证中删除它并再次扫描它没有问题,即使没有其他人可以。我认为这意味着QR码只能由一个设备使用?

可以只是说如果你处于开发模式,你不必使用2FA,但我真的不喜欢这条路线:这是一个等待发生的安全漏洞。有人可能会因为事故而开始使用dev模式。

这是我的代码:

  generateQRFromSecret({
    secret: 'secret',
    label: 'label',
    issuer: 'issuer',
  });
const generateQRFromSecret = ({ secret, label, issuer }) =>
  new Promise((resolve, reject) => {
    const otpAuthUrl = speakeasy.otpauthURL({
      secret,
      label,
      issuer,
      encoding: 'base32',
    });
    QRCode.toDataURL(otpAuthUrl, (err, dataUrl) => {
      if (err) {
        reject(err);
      } else {
        resolve(dataUrl);
      }
    });
  });

更新:Android手机似乎能够正常阅读QR码。这是不能的iphone。

0 个答案:

没有答案