当前位置: 首页 > 知识库问答 >
问题:

利用Devise实现双因素身份验证

施锋
2023-03-14

我正在尝试使用一个Gem devise-two-factor在Devise上实现双因素身份验证。我想验证是在2个步骤,在第一,我将要求用户名和密码。如果用户通过了这一步,那么他将被重定向到OTP的下一页,如果2FA被激活,否则会话将由Devise验证。

如果用户选择了2fa,那么我希望使用Devise来执行所有的身份验证,而不希望在User.validate_and_consume_otp(CURRENT_OTP)为true的情况下使用sign_in(User)函数来创建会话。我想把用户名密码和OTP作为参数传递给Devise,这样Devise就可以处理所有这三个参数的身份验证,而不需要我的干预。

为此,我想出了一些工作流程:-

>

  • 如果username和Password有效且正确,我将作为Post参数传递这些参数,并将username和Password作为隐藏字段以及用户将填写的OTP。在提交之后,这三个参数将被发送到Devise进行验证。

    我首先验证用户名是否存在于users表中,如果存在,我将使用Devise默认函数User.valid_password?(“your_password_comes_here”)检查有效的密码,如果这两个条件都为真,我将把用户的电子邮件作为会话变量传递到下一步,第二步我只验证正确的OTP(因为用户名和密码验证是在步骤1中完成的)。如果OTP是正确的,我们用作为会话变量传递的电子邮件为用户创建会话,并在成功完全登录后删除会话,否则我们将再次请求OTP。

    你能提出更好的工作流程吗?

  • 共有1个答案

    司徒杜吟
    2023-03-14

    如果您希望在两个步骤中执行2FA,可以尝试使用gem https://github.com/houdini/two_factor_authentication。

    这个gem的默认工作流是这样的:

    1. 插入用户名和密码
    2. 如果用户名和密码正确,则通知用户otp
    3. 插入OTP
    4. 如果otp正确,则登录正确
     类似资料:
    • 本文向大家介绍什么是双因素身份验证?相关面试题,主要包含被问及什么是双因素身份验证?时的应答技巧和注意事项,需要的朋友参考一下 双因素身份验证是在帐户登录过程中启用第二级身份验证。 因此,如果用户只需要输入用户名和密码,那么就被认为是单因素身份验证。

    • 问题内容: 我正在开发一个RailsWeb应用程序,该应用程序还为移动设备提供了基于JSON的API。移动客户端应首先通过(电子邮件/通过)获得令牌,然后客户端将使用该令牌进行后续的API调用。 我对Devise相当陌生,我正在寻找一个Devise API外观,并希望它返回true / false,然后基于此,我将创建并返回令牌或返回拒绝消息。但似乎Devise没有提供类似的信息。 我知道Devi

    • 我正在寻找如何使用spring security Oauth2实现双因素身份验证(2FA)的方法。要求是用户只需要对具有敏感信息的特定应用程序进行双因素身份验证。这些webapp都有自己的客户端ID。 我脑海中浮现的一个想法是“误用”范围审批页面,迫使用户输入2FA代码/PIN(或其他)。 示例流如下所示: null null

    • 在这里,我的场景有点类似于Gmail的双因素认证。当一个用户成功登录(SMS代码发送给用户),然后用另一个页面挑战他输入SMS代码。如果用户正确地获得了SMS代码,他将被显示为安全页面(如Gmail收件箱)。

    • 问题内容: 我正在使用Rails做一个单页应用程序。登录和注销时,使用ajax调用Devise控制器。我遇到的问题是当我1)登录2)退出然后再次登录时不起作用。 我认为这与CSRF令牌有关,该令牌在我退出时会重置(尽管它不应该出现),并且由于它是单页的,因此在xhr请求中发送了旧的CSRF令牌,从而重置了会话。 更具体地说,这是工作流程: 登入 登出 登录(成功201。但是在服务器日志中打印) 后

    • 我运行的是GitLab10.2.2,而双因素身份验证(2FA)根本不起作用。我很快就迁移并升级了GitLab实例。我只是将带有基键的旧复制到它的位置。但即使我没有,我也应该能激活2FA。 当我尝试激活2FA时,日志显示: