Re关于签名计算
4.2 在 Head中包含签名
用户可以在HTTP 请求中增加Authorization(授权)的Head来包含签名信
息,表明这个消息已被授权。如果用户的请求中没有 Authentication 字段,则认
为是匿名访问。
验证码计算方法如下:
"Authorization: OSS " AccessId ":" base64(hmac-sha1(VERB "\n"
CONTENT-MD5 "\n"
CONTENT-TYPE "\n"
DATE "\n"
CanonicalizedOSSHeaders
CanonicalizedResource))
Content-Md5表示请求内容数据的 MD5值
CONTENT-TYPE表示请求内容的类型
DATE表示此次操作的时间,且必须为 HTTP1.1中支持的GMT 格式
CanonicalizedOSSHeaders表示 http 中的object user meta 组合
CanonicalizedResource 表示用户想要访问的 OSS资源
其中,DATE和CanonicalizedResource 不能为空;如果请求中的DATE 时间
和 OSS 服务器的时间差正负 15 分钟以上,OSS 服务器将拒绝该服务,并返回相
应的错误码。
构建CanonicalizedOSSHeaders 的方法:
用户自定义的 OSS 文件头被称为 CanonicalizedOSSHeaders。它的构建方法
如下:
1) 将所有的 HTTP 请求头的名字转换成小写字母。如’X-OSS-Meta-Name: TaoBao’转换
成’x-oss-meta-name: TaoBao’。
2) 将上一步得到的所有 HTTP 请求头按照字典序进行升序排列。
3) 如果有相同名字的请求头,则根据标准 RFC 2616, 4.2 章进行合并(两个值之间只用逗号分隔)。
如有两个名为’x-oss-meta-name’的请求头,对应的值分别为’TaoBao’和’Alipay’,则合并后
为:’x-oss-meta-name:TaoBao,Alipay’。
4) 如果请求头内容里有多个连续的空格,则用一个空格代替之。
5) 删除请求头和内容之间分隔符两端出现的任何空格。如’x-oss-meta-name: TaoBao,Alipay’转换
成:’x-oss-meta-name:TaoBao,Alipay’。
6) 将所有的头和内容用’\n’分隔符分隔拼成最后的 CanonicalizedOSSHeader。
例如:想签名以下信息:
PUT /quotes/nelson HTTP/1.0
Content-Md5: c8fdb181845a4ca6b8fec737b3581d76
Content-Type: text/html
Date: Thu, 17 Nov 2005 18:49:58 GMT
X-OSS-Meta-Author:
foo@bar.com
X-OSS-Magic: abracadabra
假如AccessID是: "44CF9590006BF252F707"
AccessKey 是 "OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV",可用以下
方法签名
签名计算结果应该为”63mwfl zYIOG6k95yxbgMruQ6QI=”,