调用方式 签名方法

签名方法

最近更新时间:2018-06-25 16:09:11

1.签名方法

DNS API会对每个访问的请求进行身份验证,即每个请求都需要在公共请求参数中包含签名信息(hash),以验证用户身份。签名信息由用户所执有的安全凭证生成,安全凭证包括 apiKey 和 apiSecret,若用户还没有安全凭证,则需要在帝恩思官网上自主申请,否则无法调用云 API 接口。

2.申请安全凭证

在第一次使用帝恩思 API 之前,用户需要在 帝恩思 设置中心 > API密钥管理 上查看安全凭证。安全凭证包括 apiKey 和 apiSecret,其中:

apiKey:用于标识 API 调用者身份;

apiSecret:用于加密签名字符串和服务器端验证签名字符串的密钥。

3.生成签名串

有了安全凭证 apiKey 和 apiSecret 后,就可以生成签名串了。生成签名串的详细过程如下:

对参数排序

首先对所有请求参数按参数名做字典序升序排列。(所谓字典序升序排列,直观上就如同在字典中排列单词一样排序,按照字母表或数字表里递增顺序的排列次序,即先考虑第一个“字母”,在相同的情况下考虑第二个“字母”,依此类推。)您可以借助编程语言中的相关排序函数来实现这一功能,如 php 中的 ksort 函数。上述示例参数的排序结果如下:

{
  "apiKey":"c7722149110b7492a2e5cf1d8f3f966b",
  "domain":"dns.com",
  "timestamp":"1521005892713"
}

使用其它程序设计语言开发时, 可对上面示例中的参数进行排序,得到的结果一致即可。

拼接字符串

将把上一步排序好的请求参数格式化成“参数名称”=“参数值”的形式,如对 domain 参数,其参数名称为"domain",参数值为"dns.com",因此格式化后就为 domain=dns.com,并且把 apiSecret 拼接到字符串的最后。


apiSecret=ecb4ff0e877a83292b9f35067e9ae673

请求字符串
apiKey=c7722149110b7492a2e5cf1d8f3f966b&domain=dns.com
&timestamp=1521005892713

最终字符串
apiKey=c7722149110b7492a2e5cf1d8f3f966b&domain=dns.com
&timestamp=1521005892713ecb4ff0e877a83292b9f35067e9ae673

生成签名串

使用签名算法(MD5)对上一步中获得的 最终字符串 进行签名,即可获得最终的签名串。

具体代码如下,以 PHP 语言为例,由于本例中所用的签名算法为 MD5,因此生成签名串的代码如下(使用其它程序设计语言开发时,可用上述示例中的原文字符串进行签名验证,得到的签名串与例子中的一致即可):

$lastStr = 'apiKey=c7722149110b7492a2e5cf1d8f3f966b&domain=dns.com
&timestamp=1521005892713ecb4ff0e877a83292b9f35067e9ae673';
$signStr = md5($lastStr);
echo $signStr;

最终得到的签名串为:

5291f0c69e404da794079adc68b9e5ae