@geektech/backone-utils
JWT
WebCrypto HMAC JWT 签发与验证(HS256/384/512)。
jwt 模块基于 WebCrypto HMAC 实现(HS256 / HS384 / HS512),零运行时依赖。载荷为 Record<string, unknown> 与标准声明的交叉类型,允许携带任意自定义字段。
创建服务
ts
import { createJwt } from '@geektech/backone-utils';
const jwt = createJwt({
secret: process.env.JWT_SECRET ?? "",
algorithm: 'HS256',
});签发与验证
ts
// 签发:expiresIn 秒后过期
const token = await jwt.sign({ sub: '42', role: 'admin' }, { expiresIn: 3600 });
// 验证:校验签名、过期时间与 issuer
const payload = await jwt.verify(token, { issuer: 'city-index' });
payload.sub; // "42"标准声明
| 字段 | 说明 |
|---|---|
iss / sub / aud | 签发方 / 主题 / 受众 |
exp / nbf | 过期时间 / 生效时间(Unix 秒) |
iat / jti | 签发时间 / 唯一标识 |
签发选项
| 选项 | 说明 |
|---|---|
algorithm | 签名算法(默认使用服务构造时的 algorithm) |
expiresIn | 过期秒数:相对当前时间写入 exp |
notBefore | 生效秒数:相对当前时间写入 nbf |
验证选项
| 选项 | 说明 |
|---|---|
issuer | 必须匹配的 issuer(缺失或不一致则失败) |
audience | 必须匹配的 audience |
clockTolerance | 时钟容差(秒):校验 exp/nbf 时的宽松量,默认 0 |