插件注册与管理
注册稳定插件身份和 Bundle 执行声明,再发布显式授权的 Bundle 绑定。
插件注册记录是服务目录。pluginId 全局唯一且不可变,Bundle 绑定只引用该身份、协议、配置及资源授权。
执行地址不进入 Bundle,平台安装用户不需要重复注册插件。
管理入口为 baijimu lifecycle-plugin create/list/get/update/delete。执行前查看目标子命令的 --help,
确认支持 --bundle-execution。以下地址为结构示例,实际值来自插件提供方的服务登记。
Bundle 执行声明
将声明保存为 bundle-execution.json:
{
"protocolVersion": "5.0.0",
"executeUrl": "https://plugin.example/plugin/bundle/lifecycle",
"supportedStages": ["BEFORE_RESOURCES", "AFTER_RESOURCES"],
"finalization": {
"contractVersion": "1.0.0",
"executeUrl": "https://plugin.example/plugin/bundle/finalize"
}
}bundleExecution.protocolVersion 决定 Bundle 执行请求协议;必须实现两个资源阶段。
finalization 登记独立的操作终结协议,
Runtime 在准备安装前校验该能力。
创建目录记录必须显式提交 --bundle-execution,执行地址与协议都在这个声明中提供。
baijimu lifecycle-plugin create \
--plugin-id "$PLUGIN_ID" \
--name "$PLUGIN_NAME" \
--bundle-execution @bundle-execution.json \
--default-config '{}'
baijimu lifecycle-plugin get "$PLUGIN_ID"已有目录记录的所有者可更新并回读:
baijimu lifecycle-plugin update "$PLUGIN_ID" --bundle-execution @bundle-execution.json
baijimu lifecycle-plugin get "$PLUGIN_ID"核对 pluginId、bundleExecution 中的 executeUrl、protocolVersion 与支持阶段。
注册不会自动完成双向调用凭据配置,也不会安装 Bundle。先完成下列认证接入,再按
Bundle 注册与绑定声明资源授权并发布安装。
双向调用凭据
两种调用方向使用独立凭据,不能相互代用:
| 调用方向 | 配置责任 | 用途与保存位置 |
|---|---|---|
| 平台调用插件 | 插件提供方与接入环境管理员协同配置 | 插件验证自己的入站凭据;平台在环境受控配置中按 pluginId 保存对应出站凭据,用于生命周期和操作终结请求 |
| 插件调用平台 | 平台按已注册插件身份签发,由插件提供方接收 | 插件在服务端受控配置中保存平台凭据,用于解析当前引用和查询终结上下文;平台从凭据识别真实 pluginId |
两者都不是业务服务引用解析返回的临时访问材料,也不能复用 Hosted Service 管理 Token 或用户登录凭据。
凭据不得写入 defaultConfig、Bundle、源码或执行地址。执行请求中的 pluginId 字段不能代替认证。
当前 baijimu lifecycle-plugin 只提供目录管理命令,没有双向凭据签发、交付或轮换的自助子命令。
创建注册记录、发布 Bundle 或升级插件目录服务,都不会自动完成这些配置。插件提供方需与接入环境管理员
完成凭据交付、配置激活和真实请求验证;尚未完成时,插件还不能用于安装。
变更平台出站凭据后,管理员需要通过环境正式配置发布流程使配置生效,并验证所有执行副本;仅保存配置不代表 运行中的平台已经使用新值。轮换时分别验证平台调用插件、插件解析引用和查询终结上下文,再撤销相应旧凭据。 不要通过关闭认证、使用内网接口或替换成系统插件身份来绕过缺失的接入配置。
管理与敏感信息
目录查询和列表提供有效注册记录;创建、更新、停用经过平台身份及所有者权限验证。
停用后的标识不能由另一个插件复用。defaultConfig 只保存非敏感业务默认配置,不能保存 Token、密码或访问密钥。
查询不进行字段脱敏;executeUrl 不得带 userinfo、query token 或临时签名。
执行凭据保留在插件服务的受控配置边界内。
管理响应使用完整 CModel envelope:
{
"contractVersion": "1.0.0",
"errorCode": "0",
"data": {}
}业务失败使用 HTTP 200 与稳定非零 errorCode,data 为 null 或标准公开错误详情。
更新插件目录不改变已发布 Bundle 的不可变绑定;变更资源授权或配置后应发布后继 Bundle 版本再升级安装。