空间猫共享 - HTTP 工具
一组用于创建 HTTP 响应的 TypeScript 函数和用于处理的类 认证 HTTP 请求 .
页:1:从HTTP头部添加了痕量ID提取,用于分布式追踪支持.
目录
导言
这个库提供了与http相关的函数集,用于Spacecat开发. 这些功能旨在创建标准化格式的响应,从而更容易在应用程序的不同部分保持一致的结构.
安装
使用 npm 或纱线安装软件包 :
npm install @adobe/spacecat-shared-http-utils
或者说
yarn add @adobe/spacecat-shared-http-utils
使用量
导入您的 TypeScript 文件中的函数并使用它们生成 HTTP 响应 。 举个例子:
import {
ok,
noContent,
badRequest,
notFound,
internalServerError,
} from '@adobe/spacecat-shared-http-utils';
// Example usage
const successResponse: Response = ok('Request was successful');
const emptyResponse: Response = noContent();
const errorResponse: Response = badRequest('Invalid input');
const notFoundResponse: Response = notFound('Resource not found');
const serverErrorResponse: Response = internalServerError('Something went wrong');
API 密码
ok(body?: string): Response
以可选机构创建成功的响应.
noContent(headers?: Headers): Response
创建一个没有内容和可选标题的响应.
badRequest(message: string, headers?: Headers): Response
用错误消息和可选标题创建错误请求的响应.
notFound(message: string, headers?: Headers): Response
以错误消息和可选标题创建未找到的情景响应 .
internalServerError(message: string, headers?: Headers): Response
用错误消息和可选标题创建内部服务器错误的响应.
认证
此软件包包括处理认证HTTP请求的类.
FOS/REBAC 类主题
外地资产管制系统辅助的日本电信协会会议, AuthInfo#getFacsGroups() 读取 facs_grps
要求并返回最多100个已消毒的IMS组标识。 这个 facsWrapper
计算作为JWT联盟的有效准入 facs_permissions状态
绘图、 org 状态绘图和群态绘图
facs_access_mappings (单位:千美元)subject_type = 'group') (中文(简体) ). 赠款只是添加剂.
范围
范围化的API密钥在数据层中被定义,可用于认证请求到Spacecat API. 他们雇佣
"镜"可以使精细地获取资源. 一个 API 关键实体的例子看起来是这样的(id 删去:
{
"name": "Example API Key",
"hashedApiKey": "4c806362b613f7496abf284146efd31da90e4b16169fe001841ca17290f427c4",
"createdAt": "2024-08-21T19:00:00.000Z",
"expiresAt": "2024-12-21T19:00:00.000Z",
"scopes": [
{ "name": "imports.write" },
{ "name": "imports.read" }
]
}
以上要点:
hashedApiKey是实际 API 键的 SHA-256 散列( 上面“ test- api- key ”)scopes是授予 API 密钥的权限- 每个
scope对象可以包含额外数据,但name需要字段
这个 ScopedApiKeyHandler 类用于使用范围化的 API 密钥认证请求。 支持现有的
遗留 API 密钥, 应在 LegacyApiKeyHandler 输入 authHandlers 阵列。 允许请求
并快速认证现有的 API 密钥,而不需要数据库查询.
检查进入范围
为了实现新的范围,首先提及 scopeNames apiKey模型中的数组(/packages/spacecat-shared-data-access/src/models/api-key.js).
如果此处没有列出您所需的范围, 请添加 。 注意范围名称公约是 resource.action, (中文(简体) ),
譬如说. imports.write 或者说 sites.read_all编辑 _all 动作后缀表示所创建的资源以外的访问(或
选项)当前 API 键.
接下来,您将想要检查用于提出请求的 API 是否有权限从您的
控制器。 控制器。 这个 authWrapper 添加一个 auth 帮助上下文 使这一点变得容易。 举个例子
从控制器中检查范围访问 :
// This route requires the 'imports.write' scope
function protectedRoute(context) {
const { auth } = context;
try {
auth.checkScopes(['imports.write']);
} catch (error) {
throw new ErrorWithStatusCode('Missing required scopes', 401);
}
return ok('You have access to this resource');
}
需要 API 密钥实体对象的额外细节吗 ? 这个 authWrapper 将认证的 authInfo 对象
上下文 context.attributes.authInfo,其中API 关键实体可在其 profile 属性.
创建新的 API 密钥
目前这是一个人工过程,涉及在数据层中复制一个现有的API关键实体和更新
它的属性。 关于更新的表格,参见 TABLE_NAME_API_KEYS 常住的.
今后,我们正计划支持客户申请自己的API密钥的方法,只要有有效的IMS代号.
捐款
随意通过打开问题或创建拉出请求来贡献. 请遵循现有的编码样式,并在添加新功能时包含测试内容.
许可证
这个项目在Apache 2.0下获得许可——参见 自由主义 详细文件.