接口數據安全采用兩個方面去控制
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
}
```