1. 计算请求签名

使用对象存储服务时,通过RESTful API对OSS发起HTTP请求,服务器端会对请求者信息进行验证。如果请求签名信息错误,请求将会被拒绝并返回错误信息。

1.1. 签名使用场景

在对资源发送访问请求时,通过ACL策略及API请求签名,对访问请求进行身份验证,并对请求操作进行权限和有效期进行控制。 签名的安全防护作用:

  1. 防止对传输数据进行篡改。对数据进行加密并进行校验,保障传输内容的一致性。
  2. 防止签名被盗用。请求签名与时间关联,防止签名被盗用和重复使用。

1.2. 生成签名

通过RESTful API发起的HTTP请求,签名信息通过HTTP Authorization头信息传递。生成Authorization头信息需要AccessKeyId、AccessKeySecret和SignedHeaders信息,这些信息经过规范化并加密后生成Signature。 AccessKeyId和AccessKeySecret信息可在控制台获取。

生成Authorization的过程如下:

  1. 获取头字符串。
  2. 将请求头字符串格式化为规范式。
  3. 使用SHA-1 hashing算法生成HMAC。
  4. 使用base-64将HMAC结果再次编码。

将请求头字符串格式化为规范格式过程如下:

  1. 获取所有请求头信息字段。
  2. 确保这些字段都是小写字母。
  3. 按照字母顺序将这些字段排序。
  4. 将多个实例中相同的字段名称合并到一个单个字段中,并在这个字段中使用逗号分隔这些值。
  5. 将字段的值中的空格和换行符替换为单个空格。
  6. 删除冒号前后的空格。
  7. 在每个字段后追加一个空行。
  8. 将所有字段合并到头字符串中。

1.3. 签名示例:

YCS1-HMAC-SHA1 Credential=5adb2538-9333-4024-b757-e095fc609a84, SignedHeaders=date;nonce;version, Signature=PftDtEe6nnh8ue5V7LoeYh3E6S4=

Name Description
YCS1-HMAC-SHA1 签名算法,取值范围: YCS1-HMAC-SHA1
Credential 签名密钥ID
SignedHeaders 生成签名的请求头信息字段,按字母顺序排序,多个用;隔开
Signature 生成的签名信息

1.4. 示例:获取bucket下的对象列表

GET /bucket123?delimiter=%2F&maxKeys=5 HTTP /1.1
Host: cn-east-1.cloud-oss.com
Date: Thu, 15 Nov 2018 03:21:17 GMT
Version: 2018-10-30
Nonce: 612c5ff0-ac3a-406b-8715-4c56c4b5acf7
Authorization: YCS1-HMAC-SHA1 Credential=5adb2538-9333-4024-b757-e095fc609a84, SignedHeaders=date;nonce;version, Signature=PftDtEe6nnh8ue5V7LoeYh3E6S4=

results matching ""

    No results matching ""