fix oss bucket-prefixed signing

This commit is contained in:
2026-05-08 14:20:56 +08:00
parent b08127031c
commit 20d5121c6c
3 changed files with 120 additions and 58 deletions

View File

@@ -34,6 +34,8 @@
1. 当前产品口径为服务器上传 AI 生成资源、Web 端只负责读取。
2. 因此 `STS` 不作为默认上传主链,`api-server` 只暴露禁用式 contract避免浏览器拿到 OSS 写权限。
3. 服务端生成资源应优先复用 `OssClient::put_object`,上传成功后再走对象确认链路写入 `asset_object`
4. 读签名和 `HEAD Object` 的入参可以兼容 `bucket/object_key` 形式;例如 `xushi-dev/generated-square-hole-assets/.../image.png` 会先剥离当前配置 bucket再参与 OSS V4 canonical request。若 bucket 与当前配置不一致,仍按普通 object_key 校验并拒绝不在 `generated-*` 前缀下的路径。
5. OSS V4 `x-oss-date` 必须固定为 `yyyyMMdd'T'HHmmss'Z'`,不能依赖 `time::Time::to_string()`;后者在小时小于 10 时可能输出非补零时间,导致签名格式错误。
## 3. 边界约束