阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 950阅读
  • 0回复

[云安全技术和产品专区 ]云监控中签名算法

级别: 论坛粉丝
发帖
1227
云币
2325
DnMwUykF>0  
签名API请求 SO|NaqWa  
第一步:准备可用的阿里访问秘钥 hLd^ agX  
Bw)/DM]  
给 API 请求生成签名,需使用一对访问秘钥(AccessKeyId/AccessKeySecret)。您可以使用已经存在的访问秘钥对,也可以创建新的访问秘钥对,但需要保证使用的秘钥对处在“启用”状态。 2\A$6N ;_  
B4c]}r+  
第二步: 生成请求的签名字符串 d6?j`~[7#-  
uB]7G0g:  
事件监控的API 签名字符串由 HTTP 请求中的 Method,Header 和 Body 信息一同生成,具体方式如下:
  1. [backcolor=transparent]SignString[backcolor=transparent] [backcolor=transparent]=[backcolor=transparent] VERB [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]"\n"
  2. [backcolor=transparent]             [backcolor=transparent]+[backcolor=transparent] CONTENT[backcolor=transparent]-[backcolor=transparent]MD5 [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]"\n"
  3. [backcolor=transparent]             [backcolor=transparent]+[backcolor=transparent] CONTENT[backcolor=transparent]-[backcolor=transparent]TYPE [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]"\n"
  4. [backcolor=transparent]             [backcolor=transparent]+[backcolor=transparent] DATE [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]"\n"
  5. [backcolor=transparent]             [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]CanonicalizedHeaders[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]"\n"
  6. [backcolor=transparent]             [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]CanonicalizedResource
0U(@= 7V  
上面公式中的\n 表示换行转义字符,+(加号)表示字符串连接操作,其他各个部分定义如下:
名称定义示例
VERBHTTP 请求的方法名称PUT、GET、POST 等
CONTENT-MD5HTTP 请求中 Body 部分的 MD5 值(必须为大写字母串)875264590688CA6171F6228AF5BBB3D2
CONTENT-TYPEHTTP请求中 Body 部分的类型 application/json
DATEHTTP请求中的标准时间戳头(遵循 RFC 1123 格式,使用 GMT 标准时间)Mon, 3 Jan 2010 08:33:47 GMT
CanonicalizedHeaders由 HTTP 请求中以 x-cms 和 x-acs为前缀的定义头构造的字符串x-cms-api-version:0.1.0\nx-cms-signature
CanonicalizedResource由 HTTP 请求资源构造的字符串(具体构造方法见下面详述)/event/custom/upload
Xy|So|/bKd  
CanonicalizedHeaders 的构造方式如下:
  1. 将所有以x-cms和 x-acs 为前缀的 HTTP 请求头的名字转换成小写字母;
  2. 将上一步得到的所有 CMS自定义请求头按照字典序进行升序排序;
  3. 删除请求头和内容之间分隔符两端出现的任何空格;
  4. 将所有的头和内容用 \n 分隔符组合成最后的 CanonicalizedHeaders。
n71r_S*  
CanonicalizedResource 的构造方式如下:
  1. 将 CanonicalizedResource 设置为空字符串(””);
  2. 放入要访问的URI,如/event/custom/upload
  3. 如请求包含查询字符串(QUERY_STRING),则在 CanonicalizedResource 字符串尾部添加? 和查询字符串。
*KZYv=s,u  
其中QUERY_STRING 是 URL 中请求参数按字典序排序后的字符串,其中参数名和值之间用= 相隔组成字符串,并对参数名-值对按照字典序升序排序,然后以 & 符号连接构成字符串。其公式化描述如下:
  1. [backcolor=transparent]QUERY_STRING [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]"KEY1=VALUE1"[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]"&"[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]"KEY2=VALUE2"
NR 5gj-B[  
第三步 生成请求的数字签名 iW]j9}t  
)0.kv2o.  
目前,事件上报只支持一种数字签名算法,即默认签名算法 hmac-sha1。其整个签名公式如下:
  1. [backcolor=transparent]Signature[backcolor=transparent] [backcolor=transparent]=[backcolor=transparent] base16[backcolor=transparent]([backcolor=transparent]hmac[backcolor=transparent]-[backcolor=transparent]sha1[backcolor=transparent]([backcolor=transparent]UTF8[backcolor=transparent]-[backcolor=transparent]Encoding[backcolor=transparent]-[backcolor=transparent]Of[backcolor=transparent]([backcolor=transparent]SignString[backcolor=transparent]),[backcolor=transparent]AccessKeySecret[backcolor=transparent]))
'%s.^kn  
[ 此帖被反向一觉在2017-10-31 10:43重新编辑 ]
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)