我们已经准备好了,你呢?

2023我们与您携手共赢,为您的企业形象保驾护航!


喜讯:国内、香港、海外云服务器租用特惠活动,2核/4G/10M仅需31元每月,点击抢购>>>

点击这里注册天翼云特邀VIP帐号,立即体验天翼云对象存储>>>


天翼云对象存储(经典版)I型API参考-Header中包含签名


用户可以在HTTP请求中增加Authorization(授权)的Header来包含签名信息,表明这个消息已被授权。如果用户的请求中没有Authentication字段,则认为是匿名访问。

验证码计算方法如下:

"Authorization: AWS" + AccessId + ":" + Signature
Signature =Base64( HMAC-SHA1( YourSecretAccessKey, UTF-8-Encoding-Of( StringToSign ) ) ) ;
StringToSign = HTTP-VERB + "
" +
Content-MD5 + "
" +
Content-Type + "
" +
Date + "
" +
CanonicalizedAmzHeaders +"
" +
CanonicalizedResource;
 
CanonicalizedAmzHeaders = [详见下列描述];
CanonicalizedResource = [ "/" + Bucket ] +
<HTTP-Request-URI > +
  [<sub-resource>]

注:sub-resource,如果存在,可参与签名的参数包括: "acl", "torrent", "logging", "location", "policy", "requestPayment", "versioning", "versions", "versionId", "notification", "uploadId", "uploads", "partNumber", "website","delete", "lifecycle", "tagging", "cors", "restore"。

HMAC-SHA1是由RFC 2104定义的算法。该算法需要输入两个字符串:一个key和一个message。OOS在验证请求时,使用您的SecretAccessKey作为key,使用UTF-8编码的StringToSign作为message。HMAC-SHA1的输出同样是个字符串,被称为摘要。Signature请求参数是这个摘要的Base64编码。

说明

  • Content-MD5表示请求内容数据的MD5值;

  • Content-Type表示请求内容的类型;

  • Date表示此次操作的时间,且必须为HTTP1.1中支持的GMT格式;

  • CanonicalizedAmzHeaders表示http中的object user meta组合;

  • CanonicalizedResource表示用户要访问的OOS资源。

使用Base64编码

HMAC请求签名必须使用Base64编码。Base64编码将签名转换为简单的能附加到请求中的ASCII编码字符串。加号和斜杠这两个字符不能直接在URL中使用,必须经过编码。比如,如果授权编码包括加号,在URL中把它编码成为%2B。

StringToSign

StringToSign中不包含Content-Type, Date, Content-MD5这些请求头的名字,只包含这些请求头的值。但是以“x-amz”开头的请求头的名字和值都包含在StringToSign中。

如果在请求中,Content-Type, Content-MD5等请求头不存在,那么该位置用空串("")来代替。

时间戳说明

在签名时必须使用时间戳,可以用HTTP的Date请求头,也可以用x-amz-date请求头。时间戳中的时间和OOS的系统时间不能相差15分钟以上,否则,OOS会返回错误码RequestTimeTooSkewed。

有些HTTP客户端不能设置Date请求头,如果你在签名时设置Date请求头有困难,那么你可以使用x-amz-date请求头来传送时间戳。x-amz-date请求头需要符合RFC 2616 的格式 (http://www.ietf.org/rfc/rfc2616.txt)。当请求中包含x-amz-date头时,OOS在计算签名时会忽略Date头。所以如果请求中有x-amz-date头,在客户端计算签名时,Date头的值应设置为空串。

构建CanonicalizedAMZHeaders的方法

所有以“x-amz-”为前缀的HTTP Header被称为CanonicalizedAMZHeaders。它的构建方法如下:

  1. 将所有以“x-amz-”为前缀的HTTP请求头的名字转换成小写字母。如’X-AMZ-Meta-Name: fred’转换成’x-amz-meta-name: fred。

  2. 将上一步得到的所有HTTP请求头按照字典序进行升序排列。

  3. 如果有相同名字的请求头,则根据标准RFC 2616, 4.2章进行合并(两个值之间只用英文逗号分隔)。如有两个名为’x-amz-meta-name’的请求头,对应的值分别为’ fred’和’ barney’,则合并后为:’x-amz-meta-name:fred,barney’。

  4. 删除请求头和内容之间分隔符两端出现的任何空格。如’x-amz-meta-name: fred,barney’转换成:’x-amz-meta-name:fred,barney’。

  5. 将所有的头和内容用’ ’分隔符分隔拼成最后的CanonicalizedAMZHeader。

示例

  • GET Object
    从名为johnsmith的bucket中get 对象

请求

StringToSign

GET   /photos/puppy.jpg HTTP/1.1

Host:   johnsmith.oos-cn.ctyunapi.cn

Date:   Tue, 27 Mar 2007 19:36:42

+0000

Authorization:   AWS 7799e793ce4624ee7e5a:xXjDGYUmKxnwqr5KXNPGldn5LbA=

GET

Tue, 27 Mar   2007 19:36:42 +0000

/johnsmith/photos/puppy.jpg

注意:CanonicalizedResource中包含Bucket名称,但是HTTP请求URI中没有,因为Bucket名称是在Host请求头中指定的。

  • PUT Object

    向名为johnsmith的bucket中上传一个对象。

请求

StringToSign

PUT /photos/puppy.jpg   HTTP/1.1

Content-Type:   image/jpeg

Content-Length: 94328

Host: johnsmith.oos-cn.ctyunapi.cn

Date: Tue, 27 Mar 2007   21:15:45 +0000

Authorization: AWS 7799e793ce4624ee7e5a:hcicpDDvL9SsO6AkvxqmIWkmOuQ=

PUT

image/jpeg

Tue,   27 Mar 2007 21:15:45 +0000

/johnsmith/photos/puppy.jpg

注意:Content-Type请求头包含在请求中,也包含在StringToSign中。但请求中没有Content-MD5请求头,所以StringToSign中是空行。

  • List Objects

       list名为johnsmith的Bucket的对象。

请求

StringToSign

GET /?prefix=photos&max-keys=50&marker=puppy

HTTP/1.1

User-Agent: Mozilla/5.0

Host: johnsmith.oos-cn.ctyunapi.cn

Date: Tue, 27 Mar 2007 19:42:41 +0000

Authorization:   AWS 7799e793ce4624ee7e5a:jsRt/rhG+Vtp88HrYL706QhE4w4=

GET

Tue,   27 Mar 2007 19:42:41

+0000

/johnsmith/

注意:CanonicalizedResource的结尾要有斜杠/,查询字符串为空。

  • 获取ACL

下面的例子是获取名为johnsmith的bucket的访问控制权限配置信息。

请求

StringToSign

GET /?acl HTTP/1.1

Host: johnsmith.oos-cn.ctyunapi.cn

Date: Tue, 27 Mar 2007 19:44:46 +0000

Authorization:   AWS 7799e793ce4624ee7e5a:thdUi9VAkzhkniLj96JIrOPGi0g=

GET

Tue,   27 Mar 2007 19:44:46

+0000

/johnsmith/?acl

注意推荐:TOP云智能建站优惠活动,仅880元即可搭建一个后台管理五端合一的智能网站(PC网站、手机网站、百度智能小程序、微信小程序、支付宝小程序),独享百度搜索SEO优势资源,让你的网站不仅有颜值有排面,更有排名,可以实实在在为您带来效益,请点击进入TOP云智能建站>>>,或咨询在线客服了解详情。



我们已经准备好了,你呢?

2023我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

131-3501-0006

上班时间

周一到周五

公司电话

130-0743-9476

二维码
线