在URL中包含签名
除了将签名字符串放在Authorization Header,还可以将签名信息放在URL中,这样就可以将带有签名字符串的URL分享给第三方,实现授权访问。签名字符串只能在Authorization Header或URL中,两者不能同时设置,如果将签名信息放在URL中,授权访问的内容会在指定的过期时间内处于暴露状态,任何拥有该URL的第三方都可以访问,可能会带来风险。
含有签名的URL组成
签名URL示例:
http://oss-example.oss.cn-north-3.inspurcloudoss.com/example.jpg?AccessKeyId=******&Expires=3600&Signature=******
签名URL中至少包含Signature
、Expires
和AccessKeyId
三个参数。计算签名字符串的过程中要用Expires参数来替换原Date参数,其余的与签名计算方法中描述相同。Signature
表示签名信息,其计算方法如下:
Signature = base64(HMAC-SHA1(AccessKeySecret,
VERB + "\n"
+ Content-MD5 + "\n"
+ Content-Type + "\n"
+ Expires + "\n"
+ CanonicalizedOSSHeaders
+ CanonicalizedResource))
其中
Expires表示过期时间,其他参数详见签名计算方法;Expires
表示过期时间,是自UTC时间1970年1月1号开始的秒数。
错误码
错误码 | 返回信息 | 错误描述 |
---|---|---|
AccessDenied | 403 Forbidden | 缺少Signature 、Expires 或AccessKeyId 中的一个或者多个 |
AccessDenied | 403 Forbidden | 访问以过Expires指定的时间 |
AccessDenied | 403 Forbidden | 同时设置了Authorization Header和URL签名 |