·匿名请求: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=…
注意:上述示例中使用 … 省略了部分具体签名内容。