接入 MFA

多因素身份验证(MFA)是一种安全系统,是为了验证一项操作合法性而实行多种身份验证。例如银行的 U 盾,异地登录要求手机短信验证。阅读本教程后,你可以基于 Authing 的 MFA 功能进行定制化开发。

前期准备

  1. 建议安装 http-server 用于快速启动 http 服务器来查看 html 文件。npm install -g http-server

所需技能

  1. 基础 HTML 知识

  2. 中级 Javascript 知识

新建一个空白 html 文件用于编写 Authing 程序

本教程只是为了演示,因此我们没选择高级框架,这可以让我们专注于 MFA 逻辑本身。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Authing MFA Example</title>
  </head>
  <body></body>
</html>

添加基本控件

为我们的 html 添加四个输入框和三个按钮。用于输入用户名、密码、验证码、MFA 口令等信息。我们使用 jquery 的插件来生成 MFA 令牌的二维码。

初始化 SDK

浏览器端初始化时需传入用户池 ID

创建一个用户

将此函数绑定到登录按钮的点击事件上,用随机信息注册一个用户。

开启指定用户的 MFA

操作用户的 MFA 开启状态之前,必须要先获得用户的 token。可以通过 validAuth.login 函数以用户的身份登录,或者直接使用用户的 token 初始化。

生成 MFA 令牌二维码

社区有许多可以生成二维码的库,这里使用了 jquery 的二维码插件生成 MFA 二维码。

处理用户登录逻辑

当调用 validAuth.login 函数进行登录时,如果检测到用户开启了 MFA 二次验证,而没有携带 MFA 口令,会抛出一个错误,错误代码为 1635。在错误处理函数中,携带 MFA 口令再次调用 validAuth.login 即可。

完整代码

Github: mfa-demo

运行方法

双击打开 index.html 文件。

或在项目目录启动一个 http 服务器。

然后访问 127.0.0.1:8080。

Last updated

Was this helpful?