文档简介:
使用查询参数验证
除了授权头以外,用户可以通过URL中加入查询参数来表达签名信息的方式,将该URL转给第三方实现授权访问,也称为预签名URL。这对于使用第三方浏览器获取对象存储数据的用户非常有用,不需要代理请求。这种方式通过构造并加密一个终端用户浏览器可以检索到的预签名的请求来实现,同时设置过期时间来标明预签名的有效期。
预签名URL支持GET请求和POST请求。
注意:使用预签名URL方式,有将您授权的数据在过期时间内曝露在互联网上的风险,建议您预先评估后使用。
URL中包含签名的示例如下:
/quotes/nelson?AWSAccessKeyId=44CF9590006BF252F707&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D |
注意:在URL中实现签名,必须至少包含Signature,Expires,AWSAccessKeyId三个参数。
请求参数
请求字符串参数名称 |
示例中的值 |
描述 |
AWSAccessKeyId |
44CF9590006BF252F707 |
可以登录到对象存储控制住中心,点击访问控制—安全凭证—密钥,查看到AccessKeyId和AccessSecretKey。 |
Expires |
1141889120 |
定义里签名过期时间,按照秒来计算的。服务器端超过这个时间的请求将被拒绝。 有效时长最多为7天,如果您配置过期时间大于7天,有效期时间仍是7天,7天过期后会返回提示信息。 |
Signature |
vjbyPxybdZaNmGa%2ByT272YEAiv4%3D |
URL是按照HMAC-SHA1的StringToSign的Base64编码方式编码。 |
Expires这个参数的值是一个UNIX时间(自UTC时间1970年1月1号开始的秒数,详见wiki),用于标识该URL的超时时间。如果OOS接收到这个URL请求的时候晚于签名中包含的Expires参数时,则返回请求超时的错误码。例如:当前时间是1141889060,开发者希望创建一个60秒后自动失效的URL,则可以设置Expires时间为1141889120。
所有的OOS支持的请求和各种Head参数,URL中包含签名的方法和Head中包含签名的算法基本一样,主要区别如下:
1) 通过URL包含签名时,之前的Date参数换成Expires参数。
2) 不支持同时在URL和Head中包含签名。
3) 如果传入的Signature,Expires,AWSAccessKeyId出现不止一次,以第一次为准。
4) 请求先验证请求时间是否晚于Expires时间:
l 如果请求时间晚于Expires时间,则返回错误响应码;
l 如果请求时间不晚于Expires时间,则验证签名。