javascript 使用Cypress测试多因素身份验证的最佳方法是什么?[关闭]

sg2wtvxw  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(170)

**已关闭。**此问题正在寻求书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答复。

我们不允许问题寻求书籍,工具,软件库等的建议。您可以编辑问题,以便可以用事实和引用来回答。
昨天关门了。
Improve this question
如果用户启用了MFA,我正在测试的应用程序将发送OTP。我需要为该功能创建E2 E测试。我可以使用什么工具来读取Cypress测试中的传入消息并在登录时输入OTP?
我知道有一个付费服务Mailosaur允许这一点,但我正在寻找廉价/免费的解决方案。

ddrv8njm

ddrv8njm1#

如果将otplib添加到项目中,则可以完全忽略电子邮件包。
otplib是一个JavaScript一次性密码(OTP)库,用于OTP生成和验证。
它实现了HOTP-RFC 4226和TOTP-RFC 6238,并根据各自RFC规范中提供的测试向量进行测试。这些数据集可以在tests/data文件夹中找到。

  • RFC 4226数据集
  • RFC 6238数据集

此库还与Google Authenticator兼容,并包含允许您使用Google Authenticator的其他方法。
cypress.config.js添加任务,然后调用cy.task('getOTPToken', secret)并在应用中使用返回的令牌(而不是通过电子邮件发送的令牌)。

const { defineConfig } = require('cypress');
const otplib = require('otplib');

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('task', {
        getOTPToken(secret) {
          return otplib.authenticator.generate(secret);
        }
      })
    },
  },
})
72qzrwbm

72qzrwbm2#

回复有点晚,因为我们积极使用的解决方案似乎没有列出。
我们也遇到过类似的问题(尽管我们的多因素身份验证系统是基于SMS的)。
由于我们不想绕过我们的生产安全机制或重新开发演示模式,我们使用了一个平台,允许在我们的应用程序中为用户分配临时虚拟电话号码。该平台名为GetMyMFA,它允许我们在24小时内审查和批准我们的应用程序。
要使用它,我们只需在生产应用程序中创建一个用户,并附上一个虚拟电话号码,我们可以在App Store审查过程中真实的启用和禁用该号码。这样,苹果只需登录到平台(使用特定的私人用户名/密码),SMS MFA登录代码就会显示在网站上。
建立这一平台的目标是:

  • 避免花费时间在安全“旁路”(以及经常伴随而来的所有安全问题)
  • 避免构建专属于苹果的“示范”模式
  • 避免使用公共网站,任何人都可以使用公共电话号码。

我们的应用程序在24小时内通过该系统获得批准,用户可以轻松安全地禁用。

相关问题