除了使用Authorization Head,用户还可以在URL中加入签名信息,这样用户就可以把该URL转给第三方实现授权访问。
实现方式
[backcolor=transparent]URL签名示例:
http://oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=nz2pc56s936**9l&Expires=1141889120&Signature=vj byPxybdZaNmGa%2ByT272YEAiv4%3D
[backcolor=transparent]URL签名,必须至少包含Signature,Expires,OSSAccessKeyId三个参数。
Signature = urlencode(base64(hmac-sha1(AccessKeySecret,
VERB + "\n"
+ CONTENT-MD5 + "\n"
+ CONTENT-TYPE + "\n"
+ EXPIRES + "\n"
+ CanonicalizedOSSHeaders
+ CanonicalizedResource)))
http://oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=nz2pc56s936**9l&Expires=1141889120&Signature=vj byPxybdZaNmGa%2ByT272YEAiv4%3D&security-token=SecurityToken
import base64
import hmac
import sha
import urllib
h = hmac.new("OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV",
"GET\n\n\n1141889120\n/oss-example/oss-api.pdf",
sha)
urllib.quote (base64.encodestring(h.digest()).strip())
提示:
- 上面为python的示例代码
- OSS SDK中提供了提供URL签名的方法,使用方法请参看SDK文件中的 授权访问章节 章节
- OSS SDK的URL签名实现,请参看下表
SDK URL签名方法 实现文件 Java SDK OSSClient.generatePresignedUrl OSSClient.java Python SDK Bucket.sign_url api.py .Net SDK OssClient.GeneratePresignedUri OssClient.cs PHP SDK OssClient.signUrl OssClient.php JavaScript SDK signatureUrl object.js C SDK oss_gen_signed_url oss_object.c
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。