@duosecurity/duo_universal

中文文档
3.1.0发布于 2026/08/21MITTypeScriptESM + CJS构建来源已验证近 30 天下载 3.2万

节点.js执行 Duo Universal SDK.

中文使用文档
文档目录13 节
  1. 开始
  2. TLS 1.2 和 1.3 支持
  3. 用法细节
  4. 1. 进口客户
  5. 2. 创建客户端
  6. 3. 健康检查
  7. 4. 生成状态
  8. 5. 创建认证 URL
  9. 6. 密码交换
  10. 示例
  11. 贡献
  12. 测试
  13. 林特

Duo 通用节点Js 库

Build Status npm version GitHub license

这个库允许一个网页开发者快速地将Duo的交互式,自助,双因子认证添加到任何Node.js网络登录表.

见我们的开发者文档 https://www.duosecurity.com/docs/duoweb (中文(简体) ) 用于指导将 Duo 2FA 整合到您的网络应用程序.

谢谢 卢卡斯·克罗克 用于创建此库的初始版本.

开始

这个库需要Node.js LTS(v20或后期).

要在您已有的开发环境中使用此客户端, 请使用您选择的软件包管理器安装 .

npm install @duosecurity/duo_universal

pnpm add @duosecurity/duo_universal

yarn add @duosecurity/duo_universal

一旦安装完毕,请在 https://duo.com/docs/duoweb (中文(简体) ) 编辑 example 用于将 Duo 2FA 集成到您的网络应用程序的引导文件夹.

TLS 1.2 和 1.3 支持

Duo universal nodejs在TLS操作中使用了节点tls库和OpenSSL. 所有接受安全支持的节点(14及以上)版本都使用支持TLS1.2和1.3的OpenSSL 1.1.

用法细节

1. 进口客户

import { Client } from '@duosecurity/duo_universal';

2. 创建客户端

创建新的客户端实例 。 提供您的 Duo 安全应用程序证书和主机 URL 。 包含重定向 URL 以返回您的应用程序 .

const client = new Client({
    clientId: 'yourDuoApplicationClientId',
    clientSecret: 'yourDuoApplicationSecret',
    apiHost: 'api-12345678.duosecurity.com',
    redirectUrl: 'http://localhost:3000/redirect',
});

3. 健康检查

确定 Duo 的服务器是否可以访问和接受 2FA 请求 .

const status = await client.healthCheck();

4. 生成状态

生成新状态( 随机字符串) , 以链接认证尝试 。 适当存储,这样您就可以回调时检索/比较.

const state = client.generateState();

5. 创建认证 URL

创建认证 URL , 将用户重定向到 Duo Security Universal 迅速 。 提供用户标识符和前一步骤生成的状态 .

const authUrl = await client.createAuthUrl('username', 'state');

6. 密码交换

收到的汇兑 duo code 从调用重定向到符号结果 .

const token = await client.exchangeAuthorizationCodeFor2FAResult('duoCode', 'username');

示例

完整的执行实例可见于 example/。 。 。 . 简单快取应用. 请跟随 example/README.md 把它旋转起来.

贡献

叉子存储器

安装依赖关系

pnpm install

做你提议的修改。 如果适用,请添加测试,插入代码。 提交拉动请求 .

测试

pnpm run test

林特

pnpm run lint

版本与发布记录

@duosecurity/duo_universal 共发布 8 个版本,首次发布于 2022/02/02;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.1.0latest2026/08/212 个月前
3.0.12026/04/017 个月前
3.0.02025/07/211.3 年前
2.1.02025/04/291.5 年前
2.0.32024/03/262 年前
2.0.22023/02/093 年前

关于 @duosecurity/duo_universal 的常见问题

@duosecurity/duo_universal 是什么?

节点.js执行 Duo Universal SDK.

如何安装 @duosecurity/duo_universal?

在项目目录运行 npm install @duosecurity/duo_universal,或使用 pnpm add / yarn add / bun add。

@duosecurity/duo_universal 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@duosecurity/duo_universal 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@duosecurity/duo_universal 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@duosecurity/duo_universal 可以商用吗?

@duosecurity/duo_universal 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@duosecurity/duo_universal 的下载量有多少?

根据 npm 官方下载统计,@duosecurity/duo_universal 在 2026/10/13 – 2026/11/11 这 30 天内被下载 31,559 次,日均约 1,052 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@duosecurity/duo_universal 还在维护吗?

最新版本 3.1.0 发布于 2026/08/21(2 个月前);至今共发布 8 个版本,其中过去 12 个月发布了 2 个;首次发布于 2022/02/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。