@cedar-policy/cedar-authorization

中文文档
0.2.0发布于 2026/03/27Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 3.1万

JS/TS 授权使用锡达语的工具

中文使用文档
文档目录8 节
  1. 雪松认证
  2. 安装
  3. 特征
  4. 使用量
  5. API 参考
  6. 警卫
  7. 许可证
  8. 出版

雪松认证

一个 JavaScript/TypeScript 库,用于使用 Cedar 政策语言的授权. 此软件包提供了将 Cedar 授权集成到您的应用程序中的工具, 从 OpenAPI 规格生成 schemas, 以及管理授权政策 .

安装

npm i --save @cedar-policy/cedar-authorization

特征

  • 授权引擎:使用雪松政策进行授权检查

  • Schema 生成: 从 OpenAPI 规格生成 Cedar 计划

  • 政策生成: 根据您的计划创建启动策略

  • CLI 工具:用于制定计划和政策的指挥线公用事业

使用量

授权引擎

此软件包为“ 认证引擎” 提供了接口, 它需要 Cedar 请求和实体, 并返回授权结果 .

您可以在此找到示例用法 : https://github.com/cedar-policy/cedar-authorization/blob/main/tests/cedarAuthorizer.ts 互联网档案馆的存檔,存档日期2013-12-11

CLI 工具

Schema 生成: 从 OpenAPI 规格生成 Cedar 计划

npx @cedar-policy/cedar-authorization generate-schema \
  --api-spec path/to/openapi.json \
  --namespace YourNamespace \
  --mapping-type SimpleRest

这将生成两个计划文件:

v2.cedarschema.json - 与锡达 2.x和 3.x相容

v4.cedarschema.json - 与 Cedar 4.x 兼容并按节点Cedar 插件要求

在生成 OpenApi 光谱时, 请记住以下限制 :

  1. 版本支持 :
  • 只支持 OpenAPI v3 规格( 使用 OpenAPIV3 类型从 Openapi 类型)
  • 早期版本( 如 Swagger 2.0 ) 不支持
  1. 命名空间要求 :
  • 一定只有一个名字空间
  • 命名空间必须遵循严格的格式规则:
    • 必须从字母或下划线开始
    • 只能包含字母和下划线
    • 元件可以通过双结号相分离(:)
    • 每个组件必须从字母或下划线开始
  • 无法使用保留单词作为命名空间( “ 如果 ” 、 “ in ” 、 “ is ” 、 “ cedar ” )
  1. Schema 限制 :
  • 只支持本地的 schema 引用( 必须以 '#/ 组件/ schemas/' 为开头) - 无法链接到单独的 openApi 文件或 url .
  1. 操作限制参数:
  • 只支持“ path” 和“ query” 参数类型
  • 其他参数类型( 如页眉、 饼干) 被跳过并带有警告
  • 不支持被定义为直接美元ref的参数
  • 参数必须具有“名称”、“schema”和“ in”属性
  1. 服务器配置 :
  • 如果在 OpenAPI spec 中定义了多个服务器,则需要一个 BasePath 参数
  • 提供的基础Path必须匹配服务器条目之一
  • 服务器 URL 必须是可以解析的有效 URL
  1. 业务/备件需求:
  • 只支持标准 HTTP 方法( 在 SupportED HTTP Methods 中定义)
  • 选择方法被明确忽略
  • 每个操作都必须有有效的操作对象
  • x- 雪松扩展, 如果存在, 必须具有有效的应用
  1. 资源类型限制 :
  • 默认资源类型( 用户、 用户组、 应用程序) 自动包含
  • 在行动定义中必须参考自定义的资源类型
  • 如果资源类型被引用, 但没有在计划内定义, 则获得空记录形状

这些限制意味着,具有非标准扩展或精密参数类型等高级特性的复杂OpenAPI光谱可能得不到该工具的充分支持.

政策生成: 根据您的计划创建启动策略

npx @cedar-policy/cedar-authorization generate-policies \
  --schema path/to/schema.json

这将创建基于您的策略的政策目录中的政策文件 .

CLI 工具:用于制定计划和政策的指挥线公用事业

API 参考

核心类型

interface AuthorizationRequest {
  principal: EntityUid;
  action: EntityUid;
  resource: EntityUid;
  context: Record<string, CedarValueJson>;
}

interface Entity {
  uid: EntityUid;
  attrs: Record<string, CedarValueJson>;
  parents: EntityUid[];
}

type AuthorizationResult =
  { type: 'deny' } |
  { type: 'allow', authorizerInfo: AuthorizationResultInformation } |
  { type: 'error', message: string };

线性认证引擎

class CedarInlineAuthorizationEngine implements AuthorizationEngine {
  constructor(config: CedarInlineAuthorizerConfiguration);
  isAuthorized(request: AuthorizationRequest, entities: Entity[]): Promise<AuthorizationResult>;
}

警卫

见 捐款 更多信息.

许可证

这个项目根据Apache-2.0许可证获得许可证.

出版

向npm的发布是根据这些链接完成的:

版本与发布记录

@cedar-policy/cedar-authorization 共发布 3 个版本,首次发布于 2025/06/16;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.0latest2026/03/277 个月前
0.1.12025/06/261.4 年前
0.1.02025/06/161.4 年前

关于 @cedar-policy/cedar-authorization 的常见问题

@cedar-policy/cedar-authorization 是什么?

JS/TS 授权使用锡达语的工具

如何安装 @cedar-policy/cedar-authorization?

在项目目录运行 npm install @cedar-policy/cedar-authorization,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 cedar-authorization,可以用 npx cedar-authorization 直接运行。

@cedar-policy/cedar-authorization 支持 TypeScript 吗?

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

@cedar-policy/cedar-authorization 支持 ESM 还是 CommonJS?

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

@cedar-policy/cedar-authorization 可以商用吗?

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

@cedar-policy/cedar-authorization 的下载量有多少?

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

@cedar-policy/cedar-authorization 还在维护吗?

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