什么是双重认证(2 Factors Authentication)?如何在Drupal中使用?
双重认证,或者叫多重认证,英文是 Two Factor Authentication,简写为 2FA,是目前比较流行的认证方式,越来越多的服务商需要支持双重认证,就是通常我们遇到的短信认证、人脸识别等。本文就简单介绍一些什么是双重认证,以及如何在Drupal/CMS中使用双重认证。
什么是双重认证(2FA)?
双重身份验证 (2FA) 是一种安全流程,可以提高一个人身份的真实性。该流程会请求用户在访问应用程序或系统之前提供两个不同的认证因素,而不是简单地提供他们的用户名和密码。
双重认证流程:
- 第 1 步: 用户登录应用程序或网站。
- 第 2 步: 用户输入登录凭证,通常是账号和密码,做初始身份验证。
- 第 3 步: 验证成功,然后将提示用户提交第二个身份验证因素。
该因素通常是持有因素,也就是仅他们拥有的事物。例如,应用程序或网站将向用户的移动设备发送唯一的代码。 - 第 4 步: 用户将代码输入至应用程序或网站,如果代码通过,用户将通过身份验证并被授予系统访问权限。
这就是2FA的全过程,其中3/4步就是第二次验证,二次认证的方式也有很多,下面就是常见的几种。
二次认证的方式:
- 硬件令牌:就是通过硬件生成一个token,二次登录使用这个token认证。
- 软件令牌:就是通过一个app或者软件,生成一个token,二次登录使用这个token认证。
比如Google Authenticator就是提供这样服务的软件。 - 短信(SMS)/ 邮件 (Email):发送短信验证码认证,国内比较常见。
- 其他:比如微信扫码、人脸识别等等。
如何实现 2FA
一般我们实现 Two Factor Authentication 需要做如下操作,
1. 修改原有的登录业务逻辑
2. 提供新的登录界面,替换原有的登录界面
3. 能够生成token以及验证token
比较知名的2FA提供者有Google的Google Authenticator以及亚马逊的IAM服务。
CMS 系统 Drupal 里面的 2FA
我们以开源的CMS Drupal为例,来操作一遍双重认证的流程和实现过程。首先Drupal有很多开源模块,我们挑选了几个关键的实现2FA的模块如下:
- Two-factor Authentication (TFA) - 主功能
- Key - 用于管理Key
- Encrypt - 给其他模块提供加密服务
- Real AES - 实现一种具体的加密服务,对于Encrypt模块的扩展
- GA_login - 集成了 Google Authenticator 双重认证的模块。
1. 安装 TFA 模块
2. 启用 TFA 模块
TFA模块的流程如下:
- 验证用户的账号和密码
- 如果账密正确,创建登录用户的Session。
- TFA 模块实现了 hook_user_login
- TFA 通过登录的 hook,检查是否需要二次认证,如果需要,调用对应二次验证的具体方式
- 进行二次认证,比如发短信验证码等。
- 检查code是否正确,如果正确登录完成
3. TFA 模块配置
配置秘钥 /admin/config/system/keys/add
配置加密方式 /admin/config/system/encryption/profiles
启用TFA /admin/config/people/tfa
权限设置(给某些账号设置2FA的验证)
配置完成之后,就可以通过手机下载Google Authenticator软件,来登录实现2FA了。
通过上面的步骤,我们就实现了整个双重认证的流程。
当然Drupal也有一些其他模块可以实现TFA,比如 TFA Email module 也比较简单,通过Email的TFA来发送code验证。
相关的模块地址,可以参考Drupal官网以及模块的文档。
https://www.drupal.org/project/tfa
创作不易,转载请注明出处!
更多Drupal以及内容管理系统,请参考我们其他相关文章,
1、Headless CMS:以API为输出的内容系统的构建
2、内容管理平台是选择传统的 CMS 还是 Headless CMS?
6、WebVR哪个框架好?WebVR开发框架的技术选型,360VR技术框架。