# @cedar-policy/cedar-authorization 中文文档

规范地址：https://npmcn.com/package/%40cedar-policy/cedar-authorization/

版本：0\.2\.0
npm 元数据更新时间：2026-03-27T12:44:17.023Z
中文译文更新时间：2026-11-09T06:57:04.781Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cedar-policy/cedar-authorization
原文对照：https://npmcn.com/package/%40cedar-policy/cedar-authorization/?lang=original
项目主页：https://github.com/cedar-policy/express-authorization#readme
源码仓库：https://github.com/cedar-policy/cedar-authorization

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：272 kB，15 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：4 个
- 首次发布：2025-06-16T14:53:47.010Z
- 最新版本发布：2026-03-27T12:44:16.682Z
- 近 30 天下载量：31277（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 1 个）

## 中文简介

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

## 安装

```sh
npm install @cedar-policy/cedar-authorization
```

也可以使用：`pnpm add @cedar-policy/cedar-authorization`、`yarn add @cedar-policy/cedar-authorization`、`bun add @cedar-policy/cedar-authorization`

## README

## 雪松认证

一个 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](https://github.com/cedar-policy/cedar-authorization/blob/main/tests/cedarAuthorizer.test.ts)

#### 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 ) 不支持

2.  命名空间要求 :

-   一定只有一个名字空间
-   命名空间必须遵循严格的格式规则:
    -   必须从字母或下划线开始
    -   只能包含字母和下划线
    -   元件可以通过双结号相分离(:)
    -   每个组件必须从字母或下划线开始
-   无法使用保留单词作为命名空间( “ 如果 ” 、 “ in ” 、 “ is ” 、 “ cedar ” )

3.  Schema 限制 :

-   只支持本地的 schema 引用( 必须以 '#/ 组件/ schemas/' 为开头) - 无法链接到单独的 openApi 文件或 url .

4.  操作限制参数:

-   只支持“ path” 和“ query” 参数类型
-   其他参数类型( 如页眉、 饼干) 被跳过并带有警告
-   不支持被定义为直接美元ref的参数
-   参数必须具有“名称”、“schema”和“ in”属性

5.  服务器配置 :

-   如果在 OpenAPI spec 中定义了多个服务器,则需要一个 BasePath 参数
-   提供的基础Path必须匹配服务器条目之一
-   服务器 URL 必须是可以解析的有效 URL

6.  业务/备件需求:

-   只支持标准 HTTP 方法( 在 SupportED HTTP Methods 中定义)
-   选择方法被明确忽略
-   每个操作都必须有有效的操作对象
-   x- 雪松扩展, 如果存在, 必须具有有效的应用

7.  资源类型限制 :

-   默认资源类型( 用户、 用户组、 应用程序) 自动包含
-   在行动定义中必须参考自定义的资源类型
-   如果资源类型被引用, 但没有在计划内定义, 则获得空记录形状

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

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

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

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

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

### API 参考

#### 核心类型

```typescript
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 };
```

#### 线性认证引擎

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

## 警卫

见 [捐款](https://npmcn.com/package/%40cedar-policy/cedar-authorization/CONTRIBUTING.md#security-issue-notifications) 更多信息.

## 许可证

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

## 出版

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

-   [https://docs.github.com/en/actions/use-case-和-examples/出版-包装/出版-nodejs-包装](https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-nodejs-packages)
-   [https://docs.github.com/en/repositories/releasing-projects-on-github/manage-releases-in-a-repository#创建-a-leasing 互联网档案馆的存檔,存档日期2013-12-22](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release)

## 常见问题

### @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 和提交记录判断。

