在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中至少包含SignatureExpiresAccessKeyId三个参数。计算签名字符串的过程中要用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 缺少SignatureExpiresAccessKeyId中的一个或者多个
AccessDenied 403 Forbidden 访问以过Expires指定的时间
AccessDenied 403 Forbidden 同时设置了Authorization Header和URL签名