签名机制

<p><span style="font-size:16px"><strong>签名机制简介</strong></span></p> <p>通过AccessKey的方式访问后台接口,主要是通过签名校验的方式,鉴定用户请求的url是否在传输过程中被篡改过,</p> <ul> <li>若签名校验通过,则认为请求没有被篡改过,后台会将请求转发到具体的服务。</li> <li>若签名校验失败,则被认为由于一些原因,导致当前请求是不安全的,例如用户请求的url被篡改过,用户请求过期等,后台将拒绝提供服务。</li> </ul> <p>在云门户注册主用户或创建子用户后,可以为每个用户生成一对AccessKey,AccessKey由AccessKeyId与AccessKeySecret组成。通过AccessKeyId,可以在后台查出唯一对应的用户的详细信息;AccessKeySecret则作为秘钥,用于对请求进行签名。AccessKeySecret需要用户严格保密,来防止被盗用后用于冒充用户进行签名。</p> <p>目前,使用签名校验的方式访问后台接口,请求的url参数由以下几个部分组成:</p> <table border="1" cellpadding="0" cellspacing="0" style="width:464px"> <tbody> <tr> <td style="background-color:#ededed; vertical-align:top; width:225px"> <p><strong>参数名称</strong></p> </td> <td style="background-color:#ededed; vertical-align:top; width:233px"> <p><strong>参数是否参与计算签名</strong></p> </td> </tr> <tr> <td style="vertical-align:top; width:225px"> <p>accessKeyId</p> </td> <td style="vertical-align:top; width:233px"> <p>是</p> </td> </tr> <tr> <td style="vertical-align:top; width:225px"> <p>signature</p> </td> <td style="vertical-align:top; width:233px"> <p>否</p> </td> </tr> <tr> <td style="vertical-align:top; width:225px"> <p>signatureMethod</p> </td> <td style="vertical-align:top; width:233px"> <p>是</p> </td> </tr> <tr> <td style="vertical-align:top; width:225px"> <p>signatureNonce</p> </td> <td style="vertical-align:top; width:233px"> <p>是</p> </td> </tr> <tr> <td style="vertical-align:top; width:225px"> <p>signatureVersion</p> </td> <td style="vertical-align:top; width:233px"> <p>是</p> </td> </tr> <tr> <td style="vertical-align:top; width:225px"> <p>timestamp</p> </td> <td style="vertical-align:top; width:233px"> <p>是</p> </td> </tr> <tr> <td style="vertical-align:top; width:225px"> <p>version</p> </td> <td style="vertical-align:top; width:233px"> <p>是</p> </td> </tr> <tr> <td style="vertical-align:top; width:225px"> <p>具体业务接口参数</p> </td> <td style="vertical-align:top; width:233px"> <p>是</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><span style="font-size:16px"><strong>签名生成过程</strong></span></p> <p>以查询地域ListZones接口为例,调用该接口,需要传入的业务参数为action=ListZones,regionId=Region-southChina。</p> <p>必传的其他参数如公共请求参数部分所述,包括:</p> <p>accessKeyId=xKJSFaxRfWT_7H0vSzkXLj5gzuS5HDzOkepNGbHWPtDj3mqlg_9nXf4XR23zSm1J_VPlTcXCFMx3JV0UTUDBeA,</p> <p>signatureMethod=HMAC-SHA1,</p> <p>signatureNonce=3378010751426913252,</p> <p>signatureVersion=1.0,</p> <p>timestamp= 1534159280463,</p> <p>version=2017-01-01</p> <p>以上参数是需要参与计算签名的请求参数。</p> <p>(1)&nbsp; 首先要对这些参数,根据参数名称按照字母序进行排序,得到的请求参数为:accessKeyId=xKJSFaxRfWT_7H0vSzkXLj5gzuS5HDzOkepNGbHWPtDj3mqlg_9nXf4XR23zSm1J_VPlTcXCFMx3JV0UTUDBeA&amp;action=ListZones&amp;regionId=Region-southChina&amp;signatureMethod=HMAC-SHA1&amp;signatureNonce=3378010751426913252&amp;signatureVersion=1.0&amp;timestamp=1534159280463&amp;version=2017-01-01。</p> <p>(2)&nbsp; 然后对请求参数,利用HmacSHA1算法进行签名计算,计算签名需要使用AccessKeySecret,用户的AccessKeySecret是存储在客户端的,因此用户可以自行设置,利用AccessKeySecret和其他签名过程中必须的参数,可以计算得到最终的签名signature的值。通常,我们会通过SDK等方式,在用户端集成或提供生成签名或生成请求url的便捷方法。</p> <p>(3)&nbsp; 客户端利用签名和其他请求参数,生成请求url,开始请求服务端。</p>
以上内容是否解决了您的问题?
请补全提交信息!
咨询·建议

电话咨询 - 7x24 小时

400-151-8800

邮件咨询

cloud@pingan.com

在线客服

7x24 小时,急速解答

工单支持

解决云产品相关技术问题