接口数据安全采用两个方面去控制
1、数据验签
2、服务器IP白名单
>[success]数据验签
每次接口请求,都需要携带公共验签参数和数据签名参数,服务端会对参数和签名进行验证,公共参数如下:
| 参数名称 | 参数描述|数据类型 | 默认值|备注说明|
| --- |--- | --- |--- |--- |
| appId |应用编号| String | WTDZ000001 | 固定值不会变化 |
|nonceStr | 随机字符串| String | | 每次请求时随机生成 |
| timeStamp |当前时间戳 | Intger | | linux时间戳,单位:秒 |
| signature | 数据签名| String| | 计算出的数据签名 |
接口签名需要搭配固定的私钥,私钥在请求端与服务端保持一致,私钥的值为:
```
C204F747DDCED8ACA4E6923DD4E44BAC
```
数据签名的算法与步骤:
1、将参与签名的公共参数appId、nonceStr、timeStamp与其对应的值构造成键值对数组;
2、按键排字典序;
3、按如下格式拼接成字符串(也可以省略1,2步骤直接按步骤3拼接)
```
appId=appId的值&nonceStr=nonceStr的值&timeStamp=timeStamp的值&appSecret=私钥
```
4、对步骤4拼接的结果进行md5加密后全部转大写,得到类似如下的签名结果:
```
EC27F784AF67E13635E95B337CBAD9A6
```
在调用接口时,需要在接口的URL后面拼接签名参数和签名结果,参考如下:
```
http://park.demo.neikongcn.com/api/hardware/sensor/ping?appId=WTDZ000001&nonceStr=bv2jZEIl&timeStamp=1657597795&signature=EC27F784AF67E13635E95B337CBAD9A6
```
在数据签名正确的技术上,服务端会验证请求端的服务器IP是否在IP白名单内。在开发时可以使用post方式调用如下接口来进行测试:
```
http://park.demo.neikongcn.com/api/hardware/sensor/ping
```
数据验签通过会返回如下结果:
```
{
"code": 1,
"msg": "success",
"time": "1657597907",
"data": null
}
```