在临时/生产环境中,双因素身份验证代码不匹配

问题描述 投票:0回答:1

我在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) %>

如果您愿意,我将非常感谢您的帮助并提供更多详细信息。

ruby-on-rails-4 devise imagemagick minimagick two-factor-authentication
1个回答
0
投票

如上面的评论中所述,您需要设置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)”

© www.soinside.com 2019 - 2024. All rights reserved.