签名机制简介
通过AccessKey的方式访问后台接口,主要是通过签名校验的方式,鉴定用户请求的url是否在传输过程中被篡改过,
在云门户注册主用户或创建子用户后,可以为每个用户生成一对AccessKey,AccessKey由AccessKeyId与AccessKeySecret组成。通过AccessKeyId,可以在后台查出唯一对应的用户的详细信息;AccessKeySecret则作为秘钥,用于对请求进行签名。AccessKeySecret需要用户严格保密,来防止被盗用后用于冒充用户进行签名。
目前,使用签名校验的方式访问后台接口,请求的url参数由以下几个部分组成:
参数名称 |
参数是否参与计算签名 |
accessKeyId |
是 |
signature |
否 |
signatureMethod |
是 |
signatureNonce |
是 |
signatureVersion |
是 |
timestamp |
是 |
version |
是 |
具体业务接口参数 |
是 |
签名生成过程
以查询地域ListZones接口为例,调用该接口,需要传入的业务参数为action=ListZones,regionId=Region-southChina。
必传的其他参数如公共请求参数部分所述,包括:
accessKeyId=xKJSFaxRfWT_7H0vSzkXLj5gzuS5HDzOkepNGbHWPtDj3mqlg_9nXf4XR23zSm1J_VPlTcXCFMx3JV0UTUDBeA,
signatureMethod=HMAC-SHA1,
signatureNonce=3378010751426913252,
signatureVersion=1.0,
timestamp= 1534159280463,
version=2017-01-01
以上参数是需要参与计算签名的请求参数。
(1) 首先要对这些参数,根据参数名称按照字母序进行排序,得到的请求参数为:accessKeyId=xKJSFaxRfWT_7H0vSzkXLj5gzuS5HDzOkepNGbHWPtDj3mqlg_9nXf4XR23zSm1J_VPlTcXCFMx3JV0UTUDBeA&action=ListZones®ionId=Region-southChina&signatureMethod=HMAC-SHA1&signatureNonce=3378010751426913252&signatureVersion=1.0×tamp=1534159280463&version=2017-01-01。
(2) 然后对请求参数,利用HmacSHA1算法进行签名计算,计算签名需要使用AccessKeySecret,用户的AccessKeySecret是存储在客户端的,因此用户可以自行设置,利用AccessKeySecret和其他签名过程中必须的参数,可以计算得到最终的签名signature的值。通常,我们会通过SDK等方式,在用户端集成或提供生成签名或生成请求url的便捷方法。
(3) 客户端利用签名和其他请求参数,生成请求url,开始请求服务端。