阿里云产品服务会对每个访问请求进行身份验证,所以无论您使用 HTTP 还是 HTTPS 协议提交请求,都需要在请求中包含签名(Signature)信息。
签名需要您在控制台
Access Key 管理 页面获得 Access Key ID 和 Access Key Secret,进行对称加密来验证请求的发送者身份。其中,Access Key ID 用于标识访问者身份;Access Key Secret 是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密。
[backcolor=transparent]注意:阿里云提供了
Python、
Java、
PHP 和
C# 等语言的 SDK 及第三方 SDK,可以免去您对签名算法进行编码的麻烦。您可以从
这里 了解更多阿里云 SDK 的信息。
签名操作
您在访问时,需要按照下面的方法对请求进行签名处理。
[backcolor=transparent]注意:当使用 GET 方法提交请求时,这些参数就是请求 URI 中的参数部分(即 URI 中“?”之后由“&”连接的部分)。
[backcolor=transparent]注意:一般支持URL编码的库(比如 Java 中的 java.net.URLEncoder)都是按照 “application/x-www-form-urlencoded”的 MIME 类型的规则进行编码的。实现时可以直接使用这类方式进行编码,把编码后的字符串中加号(+)替换成 %20、星号(*)替换成 %2A、%7E 替换回波浪号(~),即可得到上述规则描述的编码字符串。
StringToSign=
HTTPMethod + “&” +
percentEncode(“/”) + ”&” +
percentEncode(CanonicalizedQueryString)
[backcolor=transparent]注意:计算签名时使用的 Key 就是您持有的 Access Key Secret 并加上一个 “&” 字符(ASCII:38),使用的哈希算法是 SHA1。
[backcolor=transparent]注意:得到的签名值在作为最后的请求参数值提交给服务器时,要和其它参数一样,按照 RFC3986 的规则进行 URL 编码。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。