# @arcblock/jwt 中文文档

规范地址：https://npmcn.com/package/%40arcblock/jwt/

版本：1\.30\.26
npm 元数据更新时间：2026-11-05T05:05:32.370Z
中文译文更新时间：2026-11-06T14:08:52.073Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40arcblock/jwt
原文对照：https://npmcn.com/package/%40arcblock/jwt/?lang=original
项目主页：https://github.com/ArcBlock/blockchain/tree/master/did/jwt
源码仓库：https://github.com/ArcBlock/blockchain#master

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：57.5 kB，8 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：5 个
- 首次发布：2021-10-28T08:08:21.188Z
- 最新版本发布：2026-11-05T05:05:32.180Z
- 近 30 天下载量：8820（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：431（近 12 个月 77 个）

## 中文简介

JSON 网络 弧块的托肯变体

## 安装

```sh
npm install @arcblock/jwt
```

也可以使用：`pnpm add @arcblock/jwt`、`yarn add @arcblock/jwt`、`bun add @arcblock/jwt`

## README

![arcblock-jwt](https://www.arcblock.io/.netlify/functions/badge/?text=arcblock-jwt)

[![docs](https://img.shields.io/badge/powered%20by-arcblock-green.svg)](https://docs.arcblock.io/) [![Gitter](https://badges.gitter.im/ArcBlock/community.svg)](https://gitter.im/ArcBlock/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)

这个库旨在简化处理程序 `Did-Auth` 不同部分之间的进程,按照 [ABT - DID - 协议](https://github.com/ArcBlock/abt-did-spec),并且如果使用得当,可以消除中间人附着的威胁,图书馆一般有2个用例:

-   `dApp <--> dApp`:为了在申请间交流,我们规定 `AppAuthenticator` 财务报告和审定财务报表 `AppHandlers`
-   `dApp <--> DID Wallet`:为应用程序和钱包通信,我们提供 `WalletAuthenticator` 财务报告和审定财务报表 `WalletHandlers`

## 目录

-   [目录](https://npmcn.com/package/%40arcblock/jwt/#readme-table-of-contents)
-   [安装](https://npmcn.com/package/%40arcblock/jwt/#readme-install)
-   [使用量](https://npmcn.com/package/%40arcblock/jwt/#readme-usage)
    -   [DApp 和 DD 钱包之间](https://npmcn.com/package/%40arcblock/jwt/#readme-between-dapp-and-did-wallet)
    -   [在 dApp 和 dApp 之间](https://npmcn.com/package/%40arcblock/jwt/#readme-between-dapp-and-dapp)
        -   [初始化验证器和处理器](https://npmcn.com/package/%40arcblock/jwt/#readme-initialize-authenticator-and-handlers)
        -   [对于服务器](https://npmcn.com/package/%40arcblock/jwt/#readme-for-the-server)
        -   [对于客户](https://npmcn.com/package/%40arcblock/jwt/#readme-for-the-client)

## 安装

```sh
npm install @arcblock/jwt
// or
bun install @arcblock/jwt
```

## 使用量

### DApp 和 DD 钱包之间

`WalletAuthenticator` 财务报告和审定财务报表 `WalletHandlers` 应当与 [@ ocap/ react- forge](https://www.npmjs.com/package/@ocap/react-forge)。 。 。 .

```js
const { fromRandom } = require('@ocap/wallet');
const { WalletAuthenticator, WalletHandlers } = require('@arcblock/jwt');

// First setup authenticator and handler factory
const wallet = fromRandom().toJSON();
const authenticator = new WalletAuthenticator({
  wallet,
  baseUrl: 'http://wangshijun.natapp1.cc',
  appInfo: {
    description: 'Starter projects to develop web application on forge',
    icon: '/images/logo@2x.png',
    name: 'Forge Web Starter',
  },
  chainInfo: {
    host: 'http://did-workshop.arcblock.co:8210/api',
    id: 'forge',
  },
});

const handlers = new WalletHandlers({
  authenticator,
  tokenStorage: new MongoStorage({ url: process.env.MONGO_URI }),
});

// Then attach handler to express server
const express = require('express');
const app = express();

// This is required if you want to use dynamic baseUrl inference
app.set('trust proxy', true);

handlers.attach({
  prefix: '/api/did',
  action: 'login',
  claims: {
    profile: () => ({
      fields: ['fullName', 'email'],
      description: 'Please provide your name and email to continue',
    }),
  },
  onAuth: async ({ claims, userDid }) => {
    try {
      const profile = claims.find((x) => x.type === 'profile');
      console.info('login.success', { userDid, profile });
    } catch (err) {
      console.error('login.error', err);
    }
  },
});

// Then your app will have 5 api endpoints that can be consumed by AuthComponent
// - `GET /api/did/login/token` create new token
// - `GET /api/did/login/status` check for token status
// - `GET /api/did/login/timeout` expire a token
// - `GET /api/did/login/auth` create auth response
// - `POST /api/did/login/auth` process login request
```

### 在 dApp 和 dApp 之间

请注意: `AppAuthenticator` 财务报告和审定财务报表 `AppHandlers` 应当用于签名和验证在 dApps 之间发送的信件,所以必须有客户端和服务器.

#### 初始化验证器和处理器

```js
const { fromRandom } = require('@ocap/wallet');
const { AppAuthenticator, AppHandlers } = require('@arcblock/jwt');

// First setup authenticator and handler factory
const wallet = fromRandom().toJSON();
const authenticator = new AppAuthenticator(wallet);
const handlers = new AppHandlers(authenticator);
```

#### 对于服务器

```js
const express = require('express');
const app = express();

app.post('/api/endpoint', handlers.attach(), (req, res) => {
  console.log('client.appPk', req.appPk);
  console.log('verified payload', req.payload);

  // Sent signed response: sensitive info should not be here
  res.jsonSecure({
    key: 'value',
  });
});
```

#### 对于客户

```js
const axios = require('axios');

const signedPayload = authenticator.sign({
  amount,
  depositorDid,
  depositorPk,
  withdrawer: appAuth.wallet.address,
  merchantId: process.env.MERCHANT_ID,
});

const res = await axios.post('http://example.com/api/endpoint', signedPayload);
const payload = await authenticator.verify(res.data);
if (payload.error) {
  throw new Error(payload.error);
}
// Do something with the payload
```

## 常见问题

### @arcblock/jwt 是什么？

JSON 网络 弧块的托肯变体

### 如何安装 @arcblock/jwt？

在项目目录运行 npm install @arcblock/jwt，或使用 pnpm add / yarn add / bun add。

### @arcblock/jwt 支持 TypeScript 吗？

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

### @arcblock/jwt 支持 ESM 还是 CommonJS？

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

### @arcblock/jwt 可以商用吗？

@arcblock/jwt 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @arcblock/jwt 的下载量有多少？

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

### @arcblock/jwt 还在维护吗？

最新版本 1\.30\.26 发布于 2026/11/05（2 天前）；至今共发布 431 个版本，其中过去 12 个月发布了 77 个；首次发布于 2021/10/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

