用户签名验证-凯发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. 构造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是否相等 相等:签名验证通过 不相等:签名验证失败 |
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨