bk-ci
bk-ci copied to clipboard
feat: 敏感接口能识别是系统调用还是插件调用
What would you like to be added: 如题 Why is this needed: 关联 #3349 ,当在插件输入框中使用${credentialId}时,系统会调用凭证接口解析credentialId对应的值,但是插件开发者并不知道插件有调用凭证接口,没有申请敏感接口api权限,导致插件运行的时候会提示需要申请敏感接口权限。应该区分是系统调用还是插件调用
如何区分是系统调用还是插件调用?
请求都是从构建机发起,调用的都是同一个接口,如何区分是系统还是插件调用?采用token接口鉴权的方式,系统调用在请求头中增加签名信息,服务端验证签名是否正确,如果正确,就不再验证插件是否申请api
签名token什么时候生成,生成后存放在哪
token在构建机领取插件任务的时候生成,存放在redis中。与正在运行时的插件存在一块,原来正在运行时的插件值是${atomCode},现在改成${atomCode}:${token}
如何签名
签名串一共有五行,每一行为一个参数。行尾以 \n(换行符,ASCII编码值为0x0A)结束,包括最后一行。如果参数本身以\n结束,也需要附加一个\n。
HTTP请求方法\n
URL\n
请求时间戳\n
请求随机串\n
请求报文主体\n
签名算法使用hmac-sha256
整体流程如下: