Java中怎么为WEB应用程序启用两步验证


这篇文章主要介绍“Java中怎么为WEB应用程序启用两步验证”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java中怎么为WEB应用程序启用两步验证”文章能帮助大家解决问题。支持双因素身份验证 (2FA) 几乎总是一个好主意,尤其是对于后台系统。2FA 有许多不同的形式,其中一些包括 SMS、TOTP 甚至硬件令牌。启用它们需要类似的流程:用户转到他们的个人资料页面(如果您想在注册时强制使用 2fa,请跳过此页面)单击“启用双因素身份验证”输入一些数据以启用特定的 2FA 方法(电话号码、TOTP 验证码等)下次登录时,除了用户名和密码外,登录表单还会请求第二个因素(验证码)并将其与凭据一起发送我将重点介绍 Google Authenticator,它使用 TOTP(基于时间的一次性密码)来生成一系列验证码。这个想法是服务器和客户端应用程序共享一个密钥。根据该键和当前时间,两者都得出相同的代码。当然,时钟不是完全同步的,所以有一些代码窗口被服务器接受为有效的。请注意,如果您不信任 Google 的应用程序,您可以使用下面的相同库实现您自己的客户端应用程序。如何使用 Java(在服务器上)实现它?使用GoogleAuth 库。流程如下:用户转到他们的个人资料页面单击“启用双因素身份验证”服务器生成一个密钥,将其存储为用户配置文件的一部分,并将 URL 返回到二维码。请注意,最好对机密进行加密,以使其更难被数据泄露破坏。用户使用他们的 Google Authenticator 应用程序扫描二维码,从而在应用程序中创建一个新的个人资料用户在与二维码一起出现的字段中输入应用显示的验证码,然后点击“确认”服务器在用户配置文件中将 2FA 标记为已启用或者,您可以给用户一些“临时代码”,他们可以写下这些代码,以防他们丢失应用程序或机密。如果用户不扫描代码或不验证过程,用户配置文件将只包含一个孤立的密钥,但不会被标记为已启用应该有一个选项可以稍后从他们的用户个人资料页面禁用 2FA从理论的角度来看,这里最重要的一点是密钥的共享。加密是对称的,因此双方(身份验证器应用程序和服务器)具有相同的密钥。它通过用户扫描的二维码共享。如果攻击者在那时控制了用户的机器,则机密可能会泄露,因此 2FA 也会被攻击者滥用。但这不在威胁模型中——换句话说,如果攻击者可以访问用户的机器,那么损害就已经造成了。注意:您可能会看到此过程称为 2 步身份验证或 2 因素。“因素”是:“你知道的东西”、“你拥有的东西”和“你是的东西”。您可以将 TOTP 视为“您知道”的另一件事,但您也可以将带有安全存储的密钥的手机视为“您拥有”的东西。在这种特殊情况下,我不坚持使用任何一个术语。登录后,流程如下:用户输入用户名和密码,点击“登录”页面使用 AJAX 请求询问服务器此电子邮件是否启用了 2FA如果未启用 2FA,只需提交用户名和密码表格如果启用了 2FA,则不会提交登录表单,而是会显示一个附加字段,让用户从身份验证器应用程序输入验证码用户输入代码并按登录后,即可提交表单。使用相同的登录按钮,或新的“验证”按钮,或者验证输入 + 按钮可以是一个全新的屏幕(隐藏用户名/密码输入)。然后服务器再次检查用户是否启用了 2FA,如果是,则验证验证码。如果匹配,则登录成功。如果不是,则登录失败,并且允许用户重新输入凭据和验证码。请注意,根据用户名/密码是否错误或代码错误,您可以有不同的响应。您也可以在显示验证码输入之前尝试登录。这种方式可以说更好,因为这样您就不会向潜在攻击者透露用户使用 2FA。虽然我说的是用户名和密码,但它可以适用于任何其他身份验证方法。从 OAuth/OpenID Connect/SAML 提供程序获得成功确认后,或者在获得来自SecureLogin的令牌后,您可以请求第二个因素(代码)免费云主机域名。在代码中,上述流程如下所示(使用 Spring MVC;为了简洁起见,我合并了控制器和服务层。您可以将 @AuthenticatedPrincipal 位替换为您将当前登录的用户详细信息提供给控制器的方式)。假设方法在映射到“/user/”的控制器中:二维码生成使用 Google 的服务,从技术上讲,该服务也为 Google 提供了密钥。我怀疑他们除了生成二维码之外还存储它,但是如果您不信任他们,您可以实现自己的二维码生成器,自己生成二维码应该不难。在客户端,它是对上述方法的简单 AJAX 请求(旁注:我有点觉得 AJAX 一词不再流行,但我不知道如何调用它们。异步?背景?Javascript?)。登录表单代码在很大程度上取决于您正在使用的现有登录表单,但重点是使用电子邮件(和密码)调用 /requires2fa 以检查是否启用了 2FA,然后显示验证码输入。总的来说,如果双因素身份验证的实现很简单,我建议将它用于大多数系统,在这些系统中,安全性比用户体验的简单性更重要。关于“Java中怎么为WEB应用程序启用两步验证”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: js如何获取当天24点的时间

这篇文章将为大家详细讲解有关js如何获取当天24点的时间,小编觉得挺免费云主机域名实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。同理0点时间关于“js如何获取当天24点的时间”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 09/08 17:23
Next 09/08 17:23

相关推荐