@authup/server-adapter-kit

中文文档
1.0.0-beta.73发布于 2026/11/02Apache-2.0TypeScriptES Module近 30 天下载 3305

在您自己的 API 中校验 Authup 访问令牌, 本地对照域键, 或者通过内向检查 .

中文使用文档
文档目录12 节
  1. 为什么?
  2. 安装
  3. 使用量
  4. 本地验证
  5. 远程验证
  6. 缓存已校验的令牌
  7. 约束令牌
  8. 分析授权页眉
  9. 选项
  10. API 密码
  11. 页:1
  12. 许可证

Authup logo

@ authup/ server- adapter- kit

在您自己的 API 中校验 Authup 访问令牌, 本地对照域键, 或者通过内向检查 .
验证器,缓存和无记名者 解析后节点,Socket。 IO和Web适配器.

npm version CI License: Apache-2.0

安装 • 妇女 使用量 • 妇女 API 密码 • 妇女 文档


为什么?

一个信任由Authup发布的令牌的API必须取回正确的签名密钥,检查签名和过期,拒绝非访问令牌的令牌,并决定一个被核实的结果可以再用多久. 这个软件包做过一次,所以每个运输适配器(和你自己的代码)都共享同样的规则.

关切没有它用这个
签名密钥抓取 JWKS , 选取密钥, 缓存它, 旋转时反射符号域的密钥由 kid 每个域和密钥缓存5分钟
权限调用内向端点并解析答案带有您 API 客户端证书的远程模式内观并返回对象的 permissions
托肯类持同一把钥匙签的汇票或外交部的汇票任意 kind 其他 access_token 被拒绝
重复请求检查每个请求中的每个符号可选 cache (memory或Redis) 将结果保存到符号过期
约束令牌比较 cnf.x5t#S256 你自己来证书绑定符 (RFC 8705) 失败, 除非显示的缩写匹配

对于一个HTTP服务器,一个Socket. IO 服务器或网络 Request 处理器,使用此包上的一个适配器 : @authup/server-adapter-node, (中文(简体) ), @authup/server-adapter-socket-io 或者说 @authup/server-adapter-web。 。 。 .

安装

npm install @authup/server-adapter-kit

一揽子措施仅限无害环境管理,需要节点 >=26.0.0。它没有同伴依赖关系。 安装 @authup/core-http-kit 当您使用远程模式时 createClientTokenCreator。 。 。 .

使用量

本地验证

import { TokenVerifier } from '@authup/server-adapter-kit';

const verifier = new TokenVerifier({ baseURL: 'https://auth.example.com' });

const data = await verifier.verify(token);
// data.sub, data.sub_kind, data.realm_id, data.realm_name, data.scope, data.exp

没有 creator 核查者检查标志本身:

  • 标题 kid 有效载荷必须携带 realm_id· ;
  • 从 GET /realms/<realm_id>/jwks/<kid>所以另一个域的密钥 永远无法验证符号;
  • 签名, exp 和标志 kind 检查;
  • permissions 总是 [],因为一个进入符 不携带它们.

远程验证

import { createClientTokenCreator } from '@authup/core-http-kit';
import { TokenVerifier } from '@authup/server-adapter-kit';

const verifier = new TokenVerifier({
    baseURL: 'https://auth.example.com',
    creator: createClientTokenCreator(
        { id: process.env.AUTHUP_CLIENT_ID ?? '', secret: process.env.AUTHUP_CLIENT_SECRET ?? '' },
        { client: { baseURL: 'https://auth.example.com' } },
    ),
});

const data = await verifier.verify(token);
const canRead = data.permissions.some((permission) => permission.name === 'order_read');

与一个 creator 核查员将标志发给 POST /token/introspect,用一种标志认证了创造者薄荷(再用薄荷) 401) (中文(简体) ). 答案包括主题 permissions。不活动符号抛出.

给你API的客户端 token_introspect 允许。 如果没有它,客户端可能只能透视给自己发行的会令牌,其他所有会令牌都报告为不活动.

缓存已校验的令牌

import { MemoryTokenCache, RedisTokenCache, TokenVerifier } from '@authup/server-adapter-kit';

const verifier = new TokenVerifier({
    baseURL: 'https://auth.example.com',
    cache: new MemoryTokenCache(),
});

const shared = new TokenVerifier({
    baseURL: 'https://auth.example.com',
    cache: new RedisTokenCache('redis://127.0.0.1:6379'),
    maxRemoteCacheTTL: 60,
});

验证结果仅在您通过时缓存 cache。结果保存在符物的剩余寿命,或最多 maxRemoteCacheTTL 秒,在远程模式中。 条目由命名空间和符号的 SHA-256 散列键入,默认名称空间为 authup:<local|remote>:<baseURL>。 。 。 . MemoryTokenCache (再由出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出自出. RedisTokenCache 使用连接字符串, a redis-extension 客户端,或无(redis-extension的默认连接). 隐藏你自己的枪械 ITokenCache (单位:千美元)get(key) 财务报告和审定财务报表 set(key, entry, ttl)) (中文(简体) ).

签名密钥从未存储于 cache:它们保持进程内存,因为 CryptoKey 无法序列化 .

约束令牌

const bound = await verifier.verify(token, {
    certificateThumbprint: () => thumbprintOfPresentedCertificate(),
});

代币携带 cnf (RFC 8705) 失败,除非 certificateThumbprint 解析 SHA-256 DER 缩写 cnf.x5t#S256。提供方只被调用这样的符号,检查会运行在每一个呼叫上,包含缓存结果.

分析授权页眉

import { extractBearerToken } from '@authup/server-adapter-kit';

const value = extractBearerToken(authorizationHeader); // undefined when the header is absent

它会扔 BearerTokenMalformedError (单位:千美元)bearer_token_malformed, HTTP 401 对于一个没有空格的标题, 一个除此之外的其他方案 Bearer (大小写不敏感),或为空值.

选项

new TokenVerifier(context)数字 :

选项类型默认说明
baseURLstring(必须)Authup API 的基础 URL
creatorTokenCreatorundefined切换到远程模式: 薄荷表示代号
cacheITokenCache | falseundefinedCaches 校验结果;没有它,每一次通话都会再次校验
cacheNamespacestringauthup:<local|remote>:<baseURL>将共享一个缓存的核查者条目分开。 只有配置相同的核查者可以共享命名空间
maxRemoteCacheTTLnumber剩余符号寿命缓存远程结果的上行绑定秒数
jwkCache{ ttl?, timeout? } | false{ ttl: 300, timeout: 10 }为本地模式签名密钥缓存, 保存在进程内存中 . ttl 是秒键保留了缓存( q)0 存储什么, timeout 获取密钥可能需要的秒. false 获取每次校验的密钥

verify(token, options)数字 :

选项类型默认说明
certificateThumbprintstring | () => string | undefined | Promise<string | undefined>undefined已出示客户端证书的缩略图, 或是其懒惰的提供者

API 密码

导出仁爱目的
TokenVerifier类verify(token, options?)
ITokenVerifier接口这个 verify(token, options?) 适配方接受的合同
MemoryTokenCache类进行中 ITokenCache 每入TTL(从担保出口)
RedisTokenCache类重新支持 ITokenCache
ITokenCache, (中文(简体) ), TokenCacheEntry类型担保的缓存合同,你自己的缓存
extractBearerToken函数读取一个符号 Authorization 页眉值
assertTokenCertificateBinding函数RFC 8705拇指印自己检查
TokenVerifierContext, (中文(简体) ), TokenVerifyOptions, (中文(简体) ), TokenVerificationData类型选项和结果形状

页:1

  • 本地模式不显示撤销 . 一个被取消会话的符号持续验证直到到期,一个已禁用的签名密钥持续验证直到其缓存条目过期(默认为5分钟). 使用远程模式, 或简称 jwkCache.ttl这很重要.
  • 错误是 JWTError编号. 签名错误、 索赔缺失或投错 invalid_token,过期的符号 expired_token,不活动 inactive_token。在远程模式下,其他失败都是 invalid_token;服务器本身的错误代码没有通过.
  • 结果就是复制品. verify 返回一个克隆,这样它就永远不会改变缓存的条目.
  • 亲切的标志通过. 只有礼物 kind 其他 access_token 被拒绝.

许可证

由 所制

现按 Apache 2.0 许可证。 。 。 .

版本与发布记录

@authup/server-adapter-kit 共发布 48 个版本,首次发布于 2024/10/04;过去 12 个月发布了 43 个版本。

版本发布日期距今
1.0.0-beta.73latest2026/11/025 天前
1.0.0-beta.722026/10/2711 天前
1.0.0-beta.712026/10/2018 天前
1.0.0-beta.702026/10/1919 天前
1.0.0-beta.692026/10/1424 天前
1.0.0-beta.682026/09/251 个月前

关于 @authup/server-adapter-kit 的常见问题

@authup/server-adapter-kit 是什么?

在您自己的 API 中校验 Authup 访问令牌, 本地对照域键, 或者通过内向检查 .

如何安装 @authup/server-adapter-kit?

在项目目录运行 npm install @authup/server-adapter-kit,或使用 pnpm add / yarn add / bun add。

@authup/server-adapter-kit 支持 TypeScript 吗?

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

@authup/server-adapter-kit 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@authup/server-adapter-kit 需要什么版本的 Node.js?

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

@authup/server-adapter-kit 可以商用吗?

@authup/server-adapter-kit 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@authup/server-adapter-kit 的下载量有多少?

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

@authup/server-adapter-kit 还在维护吗?

最新版本 1.0.0-beta.73 发布于 2026/11/02(5 天前);至今共发布 48 个版本,其中过去 12 个月发布了 43 个;首次发布于 2024/10/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。