npm 包 speakeasy 使用教程

阅读时长 4 分钟读完

简介

speakeasy 是一个流行的 JavaScript 库,用于生成和验证 TOTP 和 HOTP 一次性密码。TOTP(基于时间的一次性密码)和 HOTP(基于计数器的一次性密码)都是用于两步验证的常用方法。speakeasy 的完整文档可在 GitHub 页面 找到。

安装和设置

安装 speakeasy,只需要在项目文件夹下运行以下命令即可:

然后可以在代码中使用 require 方法导入:

生成秘钥

使用 speakeasy 创建秘钥非常容易,只需要使用下面的代码:

该代码将打印一个随机生成的秘钥对象,其中包括以下属性:

  • base32: 包含一个 Base32 编码的密钥字符串,可用于显示给用户或发送给其他服务。无论如何,请确保不将此值存储在非安全环境中。
  • hex: 包含一个十六进制编码的密钥字符串,可以用于某些应用程序和测试。
  • ascii: 包含一个 ASCII 编码的密钥字符串,可用于以文本格式呈现之类的内容。

你还可以向 generateSecret 函数传递其他选项,例如 name 属性。这个属性的值可以存储用户、设备或客户端应用程序的名称。该名称将随机生成的密钥结合在一起,以创建唯一的密钥。

生成 TOTP 密码

一旦你有一个密钥,你可以使用 totp 函数生成 TOTP 密码。仅需以下代码即可:

该代码将生成一个允许 30 秒的 TOTP 令牌。在处理具有同步时钟的设备时,可以使用此技术。

如果对于绝对安全性有需求,则可以创建限制一次性密码大于 30 秒的策略。

生成 HOTP 密码

hotp 函数与 totp 函数非常相似,只是hotp 生成的是一个基于计数器的一次性密码而不是一个基于时间的。这使得 hotp 函数非常适合需要与另一个应用程序同步的身份验证场景。

如上所示,使用 hotp 函数时,你需要提供密钥和计数器的值。

实现两步验证

有时,你需要将两个验证因素组合在一起,以提高安全性。有两种方法可以实现这种技术。

TOTP 和 PIN 码

这种技术使用 TOTP 和用户提供的 PIN 码来完成二次认证。

首先,用户会收到一个生成的 TOTP 令牌。然后,用户将在应用程序中输入另一个静态 PIN 码。该应用程序将汇总两个值并验证其是否匹配。

-- -------------------- ---- -------
----- ------ - -------------------
----- ---- - ---------

----- -------- - -----------------------
  ------- -------
  --------- ---------
  ------ -----
  ------- -
---

---------------- ---- ------- -- ---------- - ------- - -------------

使用如上所示的 verify 函数,可以检查传入的 PIN 码是否有效。该函数取决于输入密码和现有密码之间的区别,并给出相应的值。

HOTP 和 PIN 码

你还可以使用HOTP事务方法,该方法生成的一次性密码将与用户输入的静态 PIN 码结合使用。

-- -------------------- ---- -------
----- ------ - -------------------
----- --------- - ---------

----- -------- - -----------------------
  ------- -------
  --------- ---------
  ------ ----------
  -------- -
---

---------------- ----- ------------ -- ---------- - ------- - -------------

使用如上所示的 verify 函数,可以检查传入的 PIN 码是否有效。

结论

以上就是有关 npm 包 speakeasy 的简单介绍以及使用教程。speakeasy 是非常方便且广泛应用于两步验证的库。在实际使用中,将 speakeasy 与其他 Node.js 模块一起使用将非常容易。通过 speakeasy,您可以创建安全应用程序,并为您的用户提供更加安全的身份验证体验。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedaeb5b5cbfe1ea0610eb6

纠错
反馈