api-scan-action 当前上传走 Python cli.py 的无鉴权 --upload,缺少华为云侧身份认证。参考 @openlibing/huaweicloud-oidc-client(v0.0.5)改用 OIDC 联邦认证免密换证 + V11-HMAC-SHA256 签名调用 APIG,仓库内不存放任何 AK/SK。
cli.py
--upload
@openlibing/huaweicloud-oidc-client
callApig("POST", uploadUrl, headers, body)
X-Security-Token
results.json
--upload-header
action.yml
using: node16 → node20
fetch
debug
package.json
@openlibing/huaweicloud-oidc-client@0.0.5
engines.node ≥18
dist/index.js
ncc build
compatibilityCountBody
compatibilityDetail
detailUrl
cli.py::_safe_echo_json
core.warning
fix-upload-non-fatal
.gitcode/workflows/api-scan.yml
permissions: { repository: read, id-token: write }
upload_url
gitcode-actions
oidc:sub
openlibing/openlibing-design-api-management:*
node --test
npm run package
背景
api-scan-action 当前上传走 Python
cli.py的无鉴权--upload,缺少华为云侧身份认证。参考@openlibing/huaweicloud-oidc-client(v0.0.5)改用 OIDC 联邦认证免密换证 + V11-HMAC-SHA256 签名调用 APIG,仓库内不存放任何 AK/SK。需求
callApig("POST", uploadUrl, headers, body)完成(OIDC 换临时凭证 + V11 签名 +X-Security-Token注入);Python 工具只扫描并写results.json,不再带--upload/--upload-header。action.ymlusing: node16 → node20(SDK 依赖 Node 18+ 全局fetch);新增debug输入。package.json引入@openlibing/huaweicloud-oidc-client@0.0.5,engines.node ≥18。dist/index.js用ncc build重新打包并提交。compatibilityCountBody概览 /compatibilityDetail详情 /detailUrl末行),与 openlibing-api-parsercli.py::_safe_echo_json对齐。core.warning不阻断(沿用fix-upload-non-fatal语义)。.gitcode/workflows/api-scan.yml加permissions: { repository: read, id-token: write }。平台侧前置(非代码)
upload_url接口安全认证须为 IAM 认证(建议新增接口不改存量)。gitcode-actions的oidc:sub须放行消费仓openlibing/openlibing-design-api-management:*。验收
node --test单测响应展示纯函数通过。npm run package重建dist/index.js并提交。