【问题标题】:How to test two-factor authentication with QR images如何使用 QR 图像测试双因素身份验证
【发布时间】:2019-09-19 17:55:10
【问题描述】:

我目前正在向 Rails 应用程序添加双重身份验证。我添加了一个流程,允许用户通过使用二维码验证自己来启用双重身份验证。我正在使用这个 gem:https://github.com/Houdini/two_factor_authentication,它可以让您生成一个可以转换为 QR 码的配置 uri。然后,用户可以使用 Authy 或 Google 身份验证器等应用程序对其进行扫描,以获得一次性密码。

我现在需要为此编写测试,因此我需要能够自动化从配置 uri 获取安全代码的过程,而无需使用应用程序对其进行扫描。

所以我的问题是:是否有可能通过扫描二维码以编程方式获取密钥,如果可以,如何获取?

该应用基于 Ruby on rails 5.2。

【问题讨论】:

  • 你有Ruby QR code reader吗?如果是这样,请检索 QR 码图像,将其读回,然后通过使用 Net::HTTP、法拉第或其他方式加载它来测试它。

标签: ruby-on-rails ruby


【解决方案1】:

当您想测试特定 gem 的功能时,在大多数情况下,您可以在原始存储库中找到一些线索。流行的宝石通常经过良好测试。看这里https://github.com/Houdini/two_factor_authentication/blob/master/spec/lib/two_factor_authentication/models/two_factor_authenticatable_spec.rb#L182

【讨论】:

  • 感谢您的反馈,我查看了原始存储库,但无法找到我需要的内容。感谢您花时间查看我的问题。
【解决方案2】:

你有两个选择:

  1. 找到一种在 Ruby 中读取 QR 的方法。这与用户必须做的最相似,但可能很难(我不知道——我从来没有做过)。

  2. 自己生成 6 位代码(“TOTP 代码”)。这感觉有点老套(我想还深入到一些实现细节),但比选项 1 更容易做到。

对于选项 2,您可以使用 rotp gem(Houdini 自己使用)和您通过 Houdini 生成的密钥。

secret_key = user.generate_totp_secret

# then...

totp = ROTP::TOTP.new(secret_key)
totp.now # --> the 6-digit code

(您可以看到 Houdini 如何使用 rotp gem here。)

【讨论】:

  • 感谢您的反馈。大部分问题是找到一种以编程方式读取 QR 图像并取回代码的方法。我还没有找到可以帮助我的 QR 阅读器。感谢您的宝贵时间!
猜你喜欢
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2022-07-25
  • 2014-07-12
  • 2013-11-21
相关资源
最近更新 更多