@frogbotai/plugin-api-键
在 FrogBot 应用程序中添加多个命名,独立可撤销的 API 密钥 .
import { apiKeysPlugin } from '@frogbotai/plugin-api-keys';
import { buildConfig } from 'frogbot';
export default buildConfig({
secret: process.env.FROGBOT_SECRET!,
db: databaseAdapter,
collections: [{ slug: 'users', auth: true, fields: [] }],
plugins: [apiKeysPlugin()],
});
插件添加一个 api-keys 收集,所有者范围管理端点,API-key认证,以及默认管理员控制. frogbot dev 在开始前生成管理员导入地图,因此在第一个负载上会出现密钥创建控制。 在 API 密钥管理收藏中创建密钥, 然后用两个标题认证请求 :
Authorization: Bearer fb_...
X-API-Key: fb_...
纯文本密钥只在创建时返回 。 收藏库存储了SHA-256散列,并支持每个用户有多个独立吊销的密钥. 嵌入和旋转需要签名会话或密钥 canMint: 由任何其他密钥认证的请求获得 403,所以一个被泄露的密钥不能留下新的密钥. 钥匙有 canMint 关闭,除非一个会话 薄荷他们与 data: { canMint: true }。一个密钥被密钥记录为 mintedBy,可以拥有 canMint 仅通过它,取其对其他插件添加的字段的值,加上AI政策插件留在其模型列表和月上限内,其支出会以该上限计. 吊销一个密钥 吊销它下面的每个密钥 除非呼叫通过 cascade: false (单位:千美元)revokeApiKey({ ..., cascade: false }),或 { "cascade": false } 作为 revoke 端点的正体),它只撤销了那个键并留下了它使键起作用. 管理员的撤销对话框询问, 默认检查, 当密钥实现时 。 密钥只旋转自身和所刻出的密钥; 旋转保留 mintedBy被拒绝的人不会撤销任何东西 一个密钥仍然可以列出并重命名其所有者的密钥,并撤销自己和它所制作的密钥.
钥匙工作到被吊销为止,除非用 expiresAt,未来ISO日期,发布于 mint 旁边 name 或转至 mintApiKey发送一天,例如 2027-02-07 (协调世界时午夜)或与 Z 或一个不在未来的日期 400。一旦它通过, 键停止认证。 以后不能更改,旋转保留,旋转过期的密钥 400。由密钥铸造的密钥最迟于其父母过期。 创建对话框有一个过期日取取器,默认为空取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取.
插件没有添加预算或模型限制;请求使用所有者的AI政策. 与 @frogbotai/plugin-ai-policy 在同一认证收藏上,每个密钥也会得到一个模型列表和其所有者内部的月封顶,设置在创建对话框中一个已崩溃的Lindept段. 其他插件在密钥收藏中添加此字段 : mint 接受为 data, (中文(简体) ), rotate 从旧密钥复制它们, 由密钥刻制的密钥会占用其父的值, 服务器组件注册于 admin.custom['plugin-api-keys'].createFields 在对话框的限值部分中渲染,读取和设置值 useCreateKeyData() 从 @frogbotai/plugin-api-keys/client。在配置AI后,使用行包括可选 apiKey 关系。 Cookie - 认证请求省略, 关系随之而来 collectionSlug。 。 。 .
构建和启动工作流程必须运行 frogbot generate:importmap 在添加插件后。 添加成一个 prebuild cI 引用时的分步 next build 直接说 如果服务器控制台报告导入地图中缺少一个组件, 请运行 frogbot generate:importmap 重建,或重新启动 frogbot dev。 。 。 .
apiKeysPlugin({
authCollection: 'accounts',
collectionSlug: 'credentials',
tokenPrefix: 'acme',
headerNames: ['x-service-key'],
collection: {
admin: { group: 'Security' },
fields: [{ name: 'environment', type: 'text' }],
},
});
收藏会与生成的字段,访问,端点,钩子,管理员组件相合并,并被其他插件所应用的变换. 管理器使用默认的管理员组件,而令牌对话框则传送一个基于管理员主题变量所构建的小样式表.
插件本身没有角色系统. 钥匙是所有者范围。 要在顶部分层角色, 安装 @frogbotai/plugin-roles 通过 canRevokeAnyKey 和收藏访问 :
import { allow, hasRole } from '@frogbotai/plugin-roles';
apiKeysPlugin({
canRevokeAnyKey: (req) => hasRole(req, 'admin', 'support'),
collection: {
access: {
read: allow('auditor', 'support', { role: 'member', own: 'owner' }),
update: allow('support', { role: 'member', own: 'owner' }),
},
},
});