ruby-on-rails - 清关和 2FA(或 MFA)

标签 ruby-on-rails ruby clearance

我正在使用Clearance用于在我的 Rails 应用程序上进行身份验证。越来越多的用户要求我实现某种二因素身份验证。我认为登录时,用户可以选择使用 2FA,而不是使用电子邮件和密码登录。

您建议我使用哪种 2FA?我的用户主要是使用该应用程序进行团队工作的公司。他们希望拥有

选择太多,我有点迷失了。为了简单起见,我目前正在研究 Google Authenticator。这是一个好的选择吗?其他选项怎么样,例如向他们的电子邮件地址发送一个魔术链接,通过单击它来对他们进行身份验证(如果用户已离开组织并且不再有权访问该邮箱,则这样做的好处是拒绝身份验证)。

如何才能使这种身份验证与我当前用于身份验证的 Clearance 配合使用?

最佳答案

首先,我不建议允许用户单独使用 2FA 代码登录。毕竟这是第二个因素;大多数时候,它包含的熵比用户密码少。

我建议使用基于时间的一次性密码 (TOTP) 和 Google Authenticator 作为客户端的 token 管理应用。使用 Active Model OTP Gem 可以轻松集成到 Rails 中.

通过电子邮件或短信发送一次性代码并不是最好的方法。短信可通过 phone number spoofing 窃取如果攻击者控制了用户的电子邮件地址,电子邮件代码就会破坏 2fa,该地址还可以执行密码重置,使其成为帐户接管的一站式商店。

如果您想使用最先进的技术,请查看 U2F它依赖于加密签名。

Clearance 集成时,请务必仅您验证其用户名和密码后验证 2FA token ,尤其是您使用 TOTP 时。

关于ruby-on-rails - 清关和 2FA(或 MFA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61526501/

相关文章:

ruby-on-rails - strftime - 是否修改该值?

ruby-on-rails - 指定 rails 中种子文件的执行顺序

ruby-on-rails - Rails Put 与 Post

ruby - 我可以在 Ruby 的 Proc 中使用顶层中断来中断循环吗?

ruby-on-rails - Capistrano 偶尔无法 pull git repo

ruby - 为什么 "each"-ing 范围仅适用于递增范围?

ruby-on-rails - 一对一关系错误:ActiveModel::MissingAttributeError:无法写入未知属性

ruby-on-rails - 'current_user' 在 rails_admin 中未定义,但有许可

ruby-on-rails - 清关:修改用户密码

ruby-on-rails - 你如何通过 Clearance 和 Pundit 邀请另一个用户到 "team"或 "account"或 "project"?