详细解答可以参考官方帮助文档
用户可以在 HTTP 请求中增加 Authorization(授权)的 Head 来包含签名 (Signature)信息,表明这个消息已被授权。
Authorization 字段计算方法如下:
"Authorization: OSS " + Access Key Id + ":" + Signature Signature = 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 meta 组合
CanonicalizedResource //表示用户想要访问的 OSS 资源
验证方法如下:
>>> import base64,hmac,sha
>>> base64.encodestring(hmac.new("OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV","PUT\nODBGOERFMDMzQTczRUY3NUE3NzA5QzdFNUYzMDQxNEM=\ntext/html\nThu, 17 Nov 2005 18:49:58 GMT\nx-oss-magic:abracadabra\nx-oss-meta-author:foo@bar.com\n/oss-example/nelson",sha).digest()).strip(), '26NBxoKdsyly4EDv6inkoDft/yA='
('26NBxoKdsyly4EDv6inkoDft/yA=', '26NBxoKdsyly4EDv6inkoDft/yA=‘)
>>>
首先,在python环境下import base64,hmac,sha 其次,输入签名参数。
OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV 这个是key secret,测试过程需要替换成客户的key secret。
Thu, 17 Nov 2005 18:49:58 GMT 和 /oss-example/nelson 分别是DATE和CanonicalizedResource,这两个是必选项。
其他参数则视客户签名情况而定。
注:DATE时间和OSS服务器时间正负不能超过15分钟,否则OSS服务器返回403。
最后,26NBxoKdsyly4EDv6inkoDft/yA= 这个是签名最终计算结果,与OSS API 文档计算一致。
注:DATE格式必须是http1.1 协议规定的GMT时间格式
可以参考api文档:点击查看
如问题还未解决,请联系售后技术支持。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。