@btravstack/oauth-客户端
A 类
TokenSource用于@btravstack/core: 一个无记名标志 服务将他人称为本身或主体,而不是客户资格 或 RFC 8693 令牌交换——每个观众保持到到期前不久,一个获取共享 和用于测试的静态适配器.
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 | 它的秘密,从库贝内兹的秘密——需要 |
allowInsecureIssuer | oauthClient({ … }) | 接受一个 http: 非回转的发行者( 默认) false(中文(简体) ) |
port | oauthClient({ … }) | 单独的客户端身份的自定义源端口 |
variablePrefix | oauthClient({ … }) | 发行者和客户端变量前缀( 默认) OAUTH(中文(简体) ) |
clock | oauthClient({ … }) | 以什么来衡量一个符号的寿命 |
完整表——默认,语义和推理——活在 参考页, (中文(简体) ), 这张名单是详细的.
它决定什么,它没有
决定 发现是懒惰的 所以部署时的发行商
需要一个标志而不是靴子的呼叫;一个标志被重复使用,直到
在它到期前一分钟,有固定的FIFO能力,因此顺从营业额
有限度;这是拒绝(TokenRefused,与发行人
error 密码)和断电(TokenIssuerUnavailable)是两个打出的错误;
每一次接获都报告给 Observers; 和这个 oauth-client 卫生
检查跟随最新开始的每个受众和范围获取,即使
回复结束 。 每一个请求都写在呼叫器上
突变不能改变它的授予或毒害另一个证书的缓存.
它没有决定 失败意味着什么 重试属于
去你的交通工具。 代表一个主题, token({ audience, onBehalfOf: { token, tokenType, actor? } }) 使用RFC 8693交换. 发行人必须
授权代表团和薄荷 act 请求; 提供了演员证书
当它需要一个。 理由是
AGENTS.md。 。 。 .
许可证
麻省理工学院