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