百积木文档
开发指南Bundle 生命周期插件开发

插件注册与管理

注册稳定插件身份和 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"

核对 pluginIdbundleExecution 中的 executeUrlprotocolVersion 与支持阶段。 注册不会自动完成双向调用凭据配置,也不会安装 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 版本再升级安装。

本页内容