加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

如何处于Spring Webflux中实现双因素认证

发布时间:2022-07-20 09:19:54 所属栏目:安全 来源:互联网
导读:目前,在大多情况下,尤其是对于企业级应用、或处理敏感数据的应用(如:财务应用)场景中,多因素身份认证(Multi-factor authentication,MFA)已成为了最常见的处理方法。此外,MFA也被相关法律要求在越来越多的行业中是强制执行(尤其是在欧盟)。因此,如果您
  目前,在大多情况下,尤其是对于企业级应用、或处理敏感数据的应用(如:财务应用)场景中,多因素身份认证(Multi-factor authentication,MFA)已成为了最常见的处理方法。此外,MFA也被相关法律要求在越来越多的行业中是强制执行(尤其是在欧盟)。因此,如果您正在开发应用程序,那么大概率会以某种形式启用双(或多)因素身份认证。
 
  在本文中,我将向您展示如何为使用Spring Webflux,来构建的响应式API,以实现两因素身份认证。该应用主要使用电子邮件和密码对作为第一安全因素,并采用用户设备上应用程序(如:Google Authenticator)所生成的一次性代码(TOTP)作为第二安全因素。
 
  两因素身份认证是如何工作的
 
  从技术上讲,两(或多)因素身份认证是一个安全过程,用户必须提供两个或更多安全因素来让自己得到认证。也就是说,用户需要提供除密码以外的另一个标识符,例如:一次性密码、硬件令牌、生物特征(如:指纹)等。
 
  该安全过程涉及到如下步骤:
 
  用户输入电子邮件(用户名)和密码。
  除了第一凭据,用户还要提交由认证应用生成的一次性代码。
  应用程序在对电子邮件(用户名)和密码进行身份认证的同时,也使用在注册过程中颁发的用户密钥来认证一次性代码
  由此可见,与使用短信传递口令代码相比,使用诸如Google Authenticator、Microsoft Authenticator、以及FreeOTP等身份认证应用,既能够避免SIM卡遭受攻击(请参见--
 
  在此,我不会遍历地介绍每一个组成部分,而只会专注于AuthService、TokenManager和TotpManager。这些部分主要负责身份的认证流程。它们分别提供了以下功能:
 
  AuthService –该组件主要用于存储、认证和授权所有的业务逻辑,其中包括:注册、登录和令牌认证。
  TokenManager–该组件通过抽象代码,以生成和认证JWT令牌。它能够使得主要业务逻辑的实现与具体的JWT库相互独立。在此,我使用是Nimbus JOSE-JWT(请参见--https://connect2id.com/products/nimbus-jose-jwt/examples)。
  TotpManager–作为另一种抽象,它能够将实现与基本逻辑相隔离。TotpManager既可被用于生成用户的密钥,又可以断言(assert,可以立即为验证)给出的短代码。在此,我使用的是TOTP Java库(https://github.com/samdjstevens/java-totp)来实现,当然您也可以选用其他的库。
  由于在此仅关注认证组件,因此我们将从用户的创建过程(注册)开始,同时涉及到密钥的生成和令牌的颁发。接着,我们将进入登录流程,涉及一个由用户提供的短代码的断言。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读