更新时间:2024-01-10 gmt 08:00

用户签名验证-凯发k8国际娱乐官网入口

obs通过ak/sk对请求进行签名,在向obs发送请求时,客户端发送的每个消息头需要包含由sk、请求时间、请求类型等信息生成的签名信息。

  • ak(access key id):访问密钥id。与私有访问密钥关联的唯一标识符;访问密钥id和私有访问密钥一起使用,对请求进行加密签名。
  • sk(secret access key):与访问密钥id结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。

用户可以在iam服务中获取ak和sk,获取的方法请参见。

obs根据应用场景,提供了header中携带签名url中携带签名基于浏览器上传的表单中携带签名3种签名计算方式。

obs提供的sdk已集成了签名计算,建议您使用sdk进行开发。

以header中携带签名为例,用户签名验证流程如表1所示。header中携带签名方法的具体参数说明及代码示例,请参见header中携带签名

表1 obs签名计算和验证步骤

步骤

示例

签名计算

1. 构造http消息

put /object http/1.1

host: bucket.obs.cn-north-4.myhuaweicloud.com

date: tue, 04 jun 2019 06:54:59 gmt

content-type: text/plain

content-length: 5913

2. 按照签名规则计算stringtosign

stringtosign = http-verb "\n" content-md5 "\n" content-type "\n" date "\n" canonicalizedheaders canonicalizedresource

3. 准备ak和sk

ak: ******

sk: ******

4. 计算签名signature

signature = base64( hmac-sha1( secretaccesskeyid, utf-8-encoding-of( stringtosign ) ) )

5. 添加签名头域发送到obs服务

put /object http/1.1

host: bucket.obs.cn-north-4.myhuaweicloud.com

date: tue, 04 jun 2019 06:54:59 gmt

content-type: text/plain

content-length: 5913

authorization: obs accesskeyid:signature

签名验证

6. 接收http消息

put /object http/1.1

host: bucket.obs.cn-north-4.myhuaweicloud.com

date: tue, 04 jun 2019 06:54:59 gmt

content-type: text/plain

content-length: 5913

authorization: obs accesskeyid:signature

7. 根据请求中的ak获取sk

从头域authorization中取出ak,去iam取回用户的sk

8. 按照签名规则计算stringtosign

stringtosign = http-verb "\n" content-md5 "\n" content-type "\n" date "\n" canonicalizedheaders canonicalizedresource

9. 计算签名signature

signature = base64( hmac-sha1( secretaccesskeyid, utf-8-encoding-of( stringtosign ) ) )

10. 验证签名

验证头域authorization中的signature与服务端计算的signature是否相等

相等:签名验证通过

不相等:签名验证失败

分享:
网站地图