Open
接入华为云 OIDC 免密上传(callApig 替代无鉴权上传) #1
XueYiMingAdd on  Sep 4
XueYiMingCollaborators
Sep 4 Create

背景

api-scan-action 当前上传走 Python cli.py 的无鉴权 --upload,缺少华为云侧身份认证。参考 @openlibing/huaweicloud-oidc-client(v0.0.5)改用 OIDC 联邦认证免密换证 + V11-HMAC-SHA256 签名调用 APIG,仓库内不存放任何 AK/SK。

需求

  1. 上传改由 Node action 侧 callApig("POST", uploadUrl, headers, body) 完成(OIDC 换临时凭证 + V11 签名 + X-Security-Token 注入);Python 工具只扫描并写 results.json,不再带 --upload/--upload-header。
  2. action.yml using: node16 → node20(SDK 依赖 Node 18+ 全局 fetch);新增 debug 输入。
  3. package.json 引入 @openlibing/huaweicloud-oidc-client@0.0.5,engines.node ≥18。
  4. dist/index.js 用 ncc build 重新打包并提交。
  5. 上传响应内容展示移植到 Node(扫描结果图标 / compatibilityCountBody 概览 / compatibilityDetail 详情 / detailUrl 末行),与 openlibing-api-parser cli.py::_safe_echo_json 对齐。
  6. 上传失败保持 core.warning 不阻断(沿用 fix-upload-non-fatal 语义)。
  7. 示例 workflow .gitcode/workflows/api-scan.yml 加 permissions: { repository: read, id-token: write }。

平台侧前置(非代码)

  • APIG upload_url 接口安全认证须为 IAM 认证(建议新增接口不改存量)。
  • IAM 信任委托 gitcode-actions 的 oidc:sub 须放行消费仓 openlibing/openlibing-design-api-management:*。

验收

  • node --test 单测响应展示纯函数通过。
  • npm run package 重建 dist/index.js 并提交。
  • 消费仓 PR 流水线触发后 OIDC 端到端换证+上传成功。
likedislike