请求签名

最近更新时间:2023-12-12 15:58:41

我的收藏
腾讯云数据万象服务通过签名来验证请求的合法性。开发者通过将签名授权给客户端,使其具备上传下载及管理指定资源的能力。
使用数据万象服务时,可通过 RESTful API 发起 HTTP 匿名请求或 HTTP 签名请求,对于签名请求,服务器端将会对请求发起者进行身份验证。
匿名请求:HTTP 请求不携带任何身份标识和鉴权信息,通过 RESTful API 进行 HTTP 请求操作。
签名请求:HTTP 请求时携带签名,服务器端收到消息后,即可进行身份验证,验证成功则可接受并执行请求,否则将会返回错误信息并丢弃此请求。
数据万象基于 对象存储(Cloud Object Storage,COS),当前签名算法与 COS 保持一致,基于密钥 HMAC(Hash Message Authentication Code)的自定义方案进行身份验证。

签名算法

数据万象已实现和 COS 域名的合并,使用 COS 域名即可实现图片处理操作。对于数据万象域名和 COS 域名,在使用上有所区别,需要分别使用不同的签名版本:
COS 域名:形式为 <BucketName-APPID>.cos.<Region>.myqcloud.com,例如 examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/picture.jpeg,操作需使用 XML 版本签名,可参阅 XML 版本 请求签名
数据万象域名:形式为 <BucketName-APPID>.<picture region>.myqcloud.com<picture region>的写法为pic+地域简写,例如上海地域为picsh, 完整的域名示例:examplebucket-1250000000.picsh.myqcloud.com/picture.jpeg。
注意:
推荐使用 COS 域名进行图片的访问。数据万象域名使用的 JSON 版本签名当前已不再维护,如需使用可参阅 JSON 版本 请求签名,或通过签名工具生成。

签名适用场景

场景
适用签名
下载时数据处理
无防盗链
不验证签名
开启防盗链
验证签名
上传时数据处理
持久化处理
XML 版本签名
Bucket 接口操作
查询、开通、删除等
XML 版本签名
内容识别
鉴黄、违法违规
XML 版本签名

签名工具

生成签名所需信息包括 APPID(例如1250000000),Bucket 名称(例如 examplebucket-ci),项目的 SecretID 和 SecretKey。
获取这些信息的方法如下:
1. 登录 数据万象控制台,单击左侧菜单栏存储桶管理
2. 单击需要管理的存储桶,进入存储桶管理页面。
3. 单击【存储桶配置】,即可查看存储桶名称和 Bucket ID 。若当前项目无存储桶,您可参考 创建存储桶 文档进行创建。
4. 进入 访问管理 API 密钥管理页面,获取 SecretID 和 SecretKey。
数据万象签名计算过程与 COS 一致,您可以根据签名适用场景,使用 COS 提供的 在线签名工具 生成所需版本签名。

签名使用

通过 RESTful API 发起的 HTTP 签名请求,可以通过以下几种方式传递签名:
1. 通过标准的 HTTP Authorization 头,如Authorization: q-sign-algorithm=sha1&q-ak=...&q-sign-time=1557989753;1557996953&...&q-signature=...
2. 作为 HTTP 请求参数,请注意 UrlEncode,如/exampleobject?q-sign-algorithm=sha1&q-ak=...&q-sign-time=1557989753%3B1557996953&...&q-signature=...
注意
上述示例中使用 ... 省略了部分具体签名内容。