@btravstack/oauth-client

中文文档
0.58.0发布于 2026/11/08MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 6764

一个用于@btravstack/core的TokenSource端口:OAuth 2.0客户端证书和RFC 8693 令牌交换,所以一个服务将另一个服务称为自己或一个主题——每个观众缓存到到期前不久,一个由同时呼叫者共享,以及一个 stati

中文使用文档
文档目录4 节
  1. 实例
  2. 选项
  3. 它决定什么,它没有
  4. 许可证

@btravstack/oauth-客户端

A 类 TokenSource 用于 @btravstack/core: 一个无记名标志 服务将他人称为本身或主体,而不是客户资格 或 RFC 8693 令牌交换——每个观众保持到到期前不久,一个获取共享 和用于测试的静态适配器.

📖 文档 • 妇女 API 参考

pnpm add @btravstack/oauth-client @btravstack/core @btravstack/config \
  @btravstack/di openid-client unthrown

每一个依赖者都是同伴。 节点 >=22.12数字 : openid-client 仅限无害环境管理,所以 通用JS的构建依赖于 require(esm)。 。 。 .

实例

存货服务需要标志的端口,以及其构成 提供一条:

import {
  TokenSource,
  oauthClient,
  type TokenIssuerUnavailable,
  type TokenRefused,
} from "@btravstack/oauth-client";

class InventoryAuth extends Port("ReadmeInventoryAuth")<{
  readonly header: () => AsyncResult<string, TokenRefused | TokenIssuerUnavailable>;
}> {}

export const inventoryAuth = Provider(InventoryAuth)({
  inject: { tokens: TokenSource },
  sync: ({ tokens }) => ({
    header: () =>
      tokens
        .token({ audience: "https://inventory.internal", scope: "inventory:read" })
        .map(({ bearer }) => `Bearer ${bearer}`),
  }),
});

export const Gateway = Module("ReadmeGateway")({
  imports: [oauthClient()],
  provides: [inventoryAuth],
  exports: [InventoryAuth],
});

给一个ORPC客户端的代币 Authorization 标题,没有 Promise 离开 Result,为 呼唤另一个服务本身。 。 。 .

选项

选项何处这是什么
OAUTH_ISSUER环境 issuer需要的授权服务器
OAUTH_CLIENT_ID环境 clientId该服务的客户端——需要
OAUTH_CLIENT_SECRET环境 clientSecret它的秘密,从库贝内兹的秘密——需要
allowInsecureIssueroauthClient({ … })接受一个 http: 非回转的发行者( 默认) false(中文(简体) )
portoauthClient({ … })单独的客户端身份的自定义源端口
variablePrefixoauthClient({ … })发行者和客户端变量前缀( 默认) OAUTH(中文(简体) )
clockoauthClient({ … })以什么来衡量一个符号的寿命

完整表——默认,语义和推理——活在 参考页, (中文(简体) ), 这张名单是详细的.

它决定什么,它没有

决定 发现是懒惰的 所以部署时的发行商 需要一个标志而不是靴子的呼叫;一个标志被重复使用,直到 在它到期前一分钟,有固定的FIFO能力,因此顺从营业额 有限度;这是拒绝(TokenRefused,与发行人 error 密码)和断电(TokenIssuerUnavailable)是两个打出的错误; 每一次接获都报告给 Observers; 和这个 oauth-client 卫生 检查跟随最新开始的每个受众和范围获取,即使 回复结束 。 每一个请求都写在呼叫器上 突变不能改变它的授予或毒害另一个证书的缓存.

它没有决定 失败意味着什么 重试属于 去你的交通工具。 代表一个主题, token({ audience, onBehalfOf: { token, tokenType, actor? } }) 使用RFC 8693交换. 发行人必须 授权代表团和薄荷 act 请求; 提供了演员证书 当它需要一个。 理由是 AGENTS.md。 。 。 .

许可证

麻省理工学院

版本与发布记录

@btravstack/oauth-client 共发布 38 个版本,首次发布于 2026/10/12;过去 12 个月发布了 38 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.58.0latest2026/11/08今天
0.57.02026/11/071 天前
0.56.12026/11/062 天前
0.56.02026/11/062 天前
0.55.12026/11/035 天前
0.55.02026/11/035 天前

关于 @btravstack/oauth-client 的常见问题

@btravstack/oauth-client 是什么?

一个用于@btravstack/core的TokenSource端口:OAuth 2.0客户端证书和RFC 8693 令牌交换,所以一个服务将另一个服务称为自己或一个主题——每个观众缓存到到期前不久,一个由同时呼叫者共享,以及一个 stati

如何安装 @btravstack/oauth-client?

在项目目录运行 npm install @btravstack/oauth-client,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:unthrown(^5.0.0)、openid-client(^6)、@btravstack/di(^0.58.0)、@btravstack/core(^0.58.0)、@btravstack/config(^0.58.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@btravstack/oauth-client 支持 TypeScript 吗?

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

@btravstack/oauth-client 支持 ESM 还是 CommonJS?

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

@btravstack/oauth-client 需要什么版本的 Node.js?

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

@btravstack/oauth-client 可以商用吗?

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

@btravstack/oauth-client 的下载量有多少?

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

@btravstack/oauth-client 还在维护吗?

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