天翼云对象存储(经典版)I型API参考-Header中包含签名 | ||||||||||||||||||||||||||||||||
产品推荐: 1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>; 2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>> 3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>> 4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>> 点击这里注册天翼云特邀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 + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedAmzHeaders +"\n" + 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编码。 说明:
使用Base64编码HMAC请求签名必须使用Base64编码。Base64编码将签名转换为简单的能附加到请求中的ASCII编码字符串。加号和斜杠这两个字符不能直接在URL中使用,必须经过编码。比如,如果授权编码包括加号,在URL中把它编码成为%2B。 StringToSignStringToSign中不包含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。它的构建方法如下:
示例
注意:CanonicalizedResource中包含Bucket名称,但是HTTP请求URI中没有,因为Bucket名称是在Host请求头中指定的。
向名为johnsmith的bucket中上传一个对象。
注意:Content-Type请求头包含在请求中,也包含在StringToSign中。但请求中没有Content-MD5请求头,所以StringToSign中是空行。
list名为johnsmith的Bucket的对象。
注意:CanonicalizedResource的结尾要有斜杠/,查询字符串为空。
下面的例子是获取名为johnsmith的bucket的访问控制权限配置信息。
注意:在CanonicalizedResource中是如何包含子资源查询字符串参数的。
注意:此请求使用x-amz-date请求头来替代Date请求头,在StringToSign中,实际的Date请求头被设置成空行。
下面的例子通过CNAME 形式上传对象,并使用自定义元数据。
注意:“x-amz -”请求头被排序了,空白行被删除,转换为小写字符,多个同名的请求头使用逗号分隔的方式被加入。只有Content-Type, Content-MD5请求头被加入到了StringToSign中,但是其他的Content-*请求头没有被加入。
StringToSign中从请求URI获取的元素,是按原样获取的,包括URL编码和大小写。 |