ruby-on-rails - 如何使用 QR 图像测试双因素身份验证

标签 ruby-on-rails ruby

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

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

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

该应用程序基于 Ruby on Rails 5.2。

最佳答案

您有两个选择:

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

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

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

secret_key = user.generate_totp_secret

# then...

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

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

关于ruby-on-rails - 如何使用 QR 图像测试双因素身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58016576/

相关文章:

android - 移动开发与云数据库,该从何入手?

ruby-on-rails - 为什么 Rubocop 提高 “parser/current recognizes 2.5.5-compliant syntax, but you are running 2.5.3” ?

ruby-on-rails - 如何只返回 Mongoid 中需要的字段?

ruby - prawn - 从 URL 导入图片

ruby-on-rails - 具有数据类型的属性访问器

ruby-on-rails - 批量分配异常未找到解释(Rails 3.2.1)

ruby-on-rails - 使用 Grape 和 Devise 进行用户身份验证

ruby-on-rails - Rspec 在开始时出错

ruby - 如何正确测试使用 Fog Storage 从 AWS S3 下载的 gem?

ruby - 在 Ruby 中使用 Savon gem 与 SOAP 服务对话