API 文档

请求签名

最近更新时间:2020-06-08 11:31:10

腾讯云数据万象服务通过签名来验证请求的合法性。开发者通过将签名授权给客户端,使其具备上传下载及管理指定资源的能力。

使用数据万象服务时,可通过 RESTful API 发起 HTTP 匿名请求或 HTTP 签名请求,对于签名请求,服务器端将会对请求发起者进行身份验证。

  • 匿名请求:HTTP 请求不携带任何身份标识和鉴权信息,通过 RESTful API 进行 HTTP 请求操作。
  • 签名请求:HTTP 请求时携带签名,服务器端收到消息后,即可进行身份验证,验证成功则可接受并执行请求,否则将会返回错误信息并丢弃此请求。

数据万象基于 对象存储 COS,当前签名算法与 COS 保持一致,基于密钥 HMAC(Hash Message Authentication Code)的自定义方案进行身份验证。

签名算法

当前存在 XML 和 JSON 两个签名版本:

  • 下载时操作需使用 JSON 版本签名,可参阅 JSON 版本 请求签名
  • 上传时操作和 Bucket 接口等操作需使用 XML 版本签名,可参阅 XML 版本 请求签名
注意:

  • 下载时请求头部 Host 形式为<BucketName-APPID>.<picture region>.myqcloud.com/<picture name>,例如 examplebucket-1250000000.picsh.myqcloud.com/picture.jpeg
  • 上传时请求头部 Host 形式为<BucketName-APPID>.pic.<Region>.myqcloud.com,例如 examplebucket-1250000000.pic.ap-shanghai.myqcloud.com/picture.jpeg

签名适用场景

场景 适用签名
下载时数据处理 无防盗链 不验证签名
开启防盗链 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=...
注意:

上述示例中使用 ... 省略了部分具体签名内容。

目录