全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
资源编排

签名机制

更新时间:2017-06-07 13:26:11

签名机制

ROA风格API签名包含两部分:公共请求头(http协议header参数、阿里云协议header参数)、CanonicalizedResource(规范资源),Body不计入签名。

公共请求头

名称 描述
Authorization 用于验证请求合法性的认证信息,采用 acs AccessKeyId:signature 格式
Content-Length RFC 2616中定义的HTTP请求内容长度。
Content-Type RFC 2616中定义的HTTP请求内容类型。
Content-MD5 HTTP协议消息体的128-bit MD5散列值转换成BASE64编码的结果。为了防止所有请求被篡改,这里建议所有请求都附加该信息
Date 描述请求时间,GMT格式,如: Wed, 26 Aug. 2015 17:01:00 GMT
Accept 客户端需要的返回值类型,支持application/json和application/xml。
Host 访问Host值,例如:ros.aliyuncs.com
x-acs-signature-nonce 唯一随机数,用于防止网络重放攻击。用户在不同请求间要使用不同的随机数值。
x-acs-signature-method 签名方法,目前只支持HMAC-SHA1
x-acs-signature-version 签名版本,目前是1.0

签名计算方法

ROA风格的API请求使用标准的Authorization头来签名自己的请求,请求格式如下:

    Authorization: acs AccessKeyId:Signature

公共请求头计算签名

http协议Header

计算签名必须包含参数,Accept、Content-MD5、Content-Type、Date的值(没有key)(Content-Length不计入签名),并按顺序排列;若值不存在则以”\n”补齐

阿里云协议header(CanonicalizedHeaders)

CanonicalizedHeaders(阿里云规范头),非标准HTTP头部信息。是指请求中出现的以”x-acs-”为前缀的参数信息。

构成阿里云规范头的方法步骤如下:

1.将所有以“x-acs-”为前缀的HTTP请求头的名字转换成小写字母。如’X-acs-OSS-Meta-Name: TaoBao’转换成’x-acs-oss-meta-name: TaoBao’。阿里云规范请求头的名字是大小写不敏感的,这里建议全小写;

2.如果一个公共请求头的值部分过长,则需要处理其中的”\t”、“\n”、“\r”、“\f”分隔符,将其替换成英文半角的空格;

3.将上一步得到的所有HTTP阿里云规范头按照字典序进行升序排列;

4.删除请求头和内容之间分隔符两端出现的任何空格。如’x-acs-oss-meta-name: TaoBao,Alipay’转换成:’x-acs-oss-meta-name:TaoBao,Alipay’;

5.将所有的头和内容用’\n’分隔符分隔拼成最后的CanonicalizedHeaders。

签名中如何包含CanonicalizedResource(规范资源)--qureyString

CanonicalizedResource表示客户想要访问资源的规范描述,需要将子资源和qurey一同按照字典序,从小到大排列并以’&’为分隔符生成子资源字符串(?后的所有参数)。 如:

http://ros.aliyuncs.com/stacks?name=test_alert&status=COMPLETE

排序后应为:

name=test_alert+"\n"+
status=COMPLETE

封装签名

Authorization =  acs AccessKeyId + ":" + Signature

Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(
StringToSign) ) )

StringToSign =

Http协议header

HTTP-Verb + "\n" +
    Accept + "\n" +
    Content-MD5 + "\n" +
    Content-Type + "\n" +
    Date + "\n" +

阿里云协议header(CanonicalizedHeaders):

CanonicalizedHeaders +

签名中如何包含CanonicalizedResource(规范资源)--qureyString

CanonicalizedResource
本文导读目录