在临时/生产环境中,双因素身份验证代码不匹配
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在临时/生产环境中,双因素身份验证代码不匹配相关的知识,希望对你有一定的参考价值。
我在Rails4应用程序中设置了双因素身份验证。在我的开发环境中一切正常,但在Staging环境中失败了。我的暂存环境是运行nginx Web服务器的Ubuntu 14.04 LTS。我已经安装了ImageMagick 6.7.7-10
。虽然我的开发环境是macOS High Sierra,但我安装了ImageMagick 7.0.6-7
并运行了THIN Web服务器。
RubyGems的:
gem 'devise', '~> 3.5', '>= 3.5.2'
gem 'devise-two-factor', '~> 2.2', '>= 2.2.1'
gem 'rqrcode-rails3', '~> 0.1.7'
gem 'mini_magick', '~> 4.5'
QRCode在Staging上呈现,但它看起来与Development不同。我不确定这是不是一个案例。还有一件事是,可以通过Google身份验证器应用程序扫描QRCode,但是当我验证代码时,它失败了。在Staging中,我在rails控制台中检查了user.current_otp
,它与我扫描的代码永远不匹配。但在开发中,我扫描QRCode,我得到匹配代码,因为我在我的rails控制台中执行user.current_otp
。
我将QRCode渲染为svg图像。
<%= raw RQRCode::render_qrcode(current_user.otp_provisioning_uri(current_user.email, issuer: "2FA App"), :svg, level: :l, unit: 2) %>
如果您愿意,我将非常感谢您的帮助并提供更多详细信息。
如上面的评论中所述,您需要设置NTP操作临时服务器并同步时间以及可能在手机上的Google身份验证器应用中同步时间:
在Ubuntu上安装NTP:
禁用timesyncd:
sudo timedatectl set-ntp no
验证是否已禁用timesyncd:
timedatectl
安装ntpd:
sudo apt-get install ntp
检查ntpd是否正在运行:
sudo ntpq -p
检查日期和时间:
date
比较分钟和秒与一些网站链接:https://www.timeanddate.com/
android / ios上的同步时间Google身份验证器应用:
https://support.google.com/accounts/answer/185834?hl=en
滚动到最底部分:“我的Google身份验证器代码无效(Android)”
以上是关于在临时/生产环境中,双因素身份验证代码不匹配的主要内容,如果未能解决你的问题,请参考以下文章