fix(platform): strip oauth signature params from JSON request bodies
injector 此前只对 form-urlencoded body 剥离 SDK 无条件附加的 Signature/PublicKey (Credential.Apply 即使空密钥也会算出签名),JSON body 走不到剥离分支。 平台不变式(见 buildCredential 注释)要求「一个请求只携带一种凭据机制」。JSON 编码器此前不可达,故该约束在 JSON 路径上从未被满足;products/pgsql(#127) 是第一个 走 JSON 编码器的产品(UPgSQL 网关无法把 form 的字符串 "100" unmarshal 进 Go 的 *int,RetCode 214001,故 SetEncoder 换成 NewJSONEncoder)。 这不是在修一个当前故障。2026-07-14 对 api.ucloud.cn 实测确认:oauth + JSON body 携带 Signature 时网关照常返回 RetCode 0 —— 网关不从 JSON body 读签名参数,看到 Bearer 即走 Bearer 鉴权,pgsql 在 OAuth 下今天可正常使用。本改动是加固:把不变式 在 JSON 路径上补齐,不再依赖网关当前的宽容(那是实现细节而非契约,一旦收紧就会 变成难查的 171)。 改法与 form 分支同构:按 Content-Type 精确分派,不认识的一律不碰 body (url.ParseQuery 对 JSON 往往"成功",盲目重编码会毁掉 body —— 这正是原先只处理 form 的理由,现在升级为精确分派)。 回归保护:aksk + JSON body 逐字节不变(AK/SK 的签名活在 body 里)、oauth + form 行为与历史一致、不认识的 Content-Type 不碰 body。
E
Episkey committed
f34f7413b74bf4365b3cab99004227456e01def3
Parent: 62eb03c