我目前正在向 Rails 应用程序添加双因素身份验证。我添加了一个流程,让用户可以使用二维码来验证自己,从而启用双因素身份验证。我正在使用这个 gem :https://github.com/Houdini/two_factor_authentication ,它可以让您生成一个可转换为二维码的配置 uri。然后,用户可以使用 Authy 或 Google 身份验证器等应用程序扫描该密码,以获得一次性密码。
我现在需要为此编写测试,因此我需要能够自动化从配置 uri 获取安全代码的过程,而无需使用应用程序扫描它。
所以我的问题是:是否可以通过扫描二维码以编程方式获取 key ?如果可以,如何获取?
该应用程序基于 Ruby on Rails 5.2。
最佳答案
您有两个选择:
找到一种在 Ruby 中读取 QR 的方法。这最类似于用户必须做的事情,但可能很难(我不知道——我从来没有这样做过)。
自行生成 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/