[toc]
Cloud接口规范
环境
生产环境
api.ugnas.com
测试环境
api-test.ugnas.com
接口响应
响应数据
| 参数名 | 参数类型 | 必传 | 描述 |
|---|---|---|---|
| code | int | 是 | 接口响应状态码(200: 成功, 其他为失败) |
| msg | string | 否 | 接口响应描述(接口异常时会响应) |
| data | object | 否 | 接口响应数据 |
响应示例
{"code": 200, "msg": "", "data": {}}
接口鉴权
设备端鉴权
请求头参数
| 参数名 | 参数类型 | 必传 | 描述 |
|---|---|---|---|
| ak | string | 是 | 接入标识 (对应nas设备序列号sn) |
| mac | string | 是 | 设备mac地址 |
| ts | string | 是 | 时间戳(单位秒) |
用于控制请求时效
目前默认半小时
(客户端请求时间不能大于或者小于服务端半小时) |
| sign | string | 是 | 计算出的签名字符串 |
签名算法
-
参数值为object或者list类型的不参与签名
-
按照请求参数名的字母升序排列非空请求参数
-
移除内容为空的 参数
-
使用 key1=value1&key2=value2方式拼接
-
在字符串最后加上 &SecretKey=${通讯秘钥}
签名示例
通用参数:
{
"ak":"DH00002006000029",
"mac":"98:6E:E8:20:25:03",
"ts":"1640835564",
"sign":"0e2b218b27af8ce4742b85459419da90"
}
接口参数:
{
"name":"fff",
"count":10,
"err":true,
"sn":"devicesn",
"searchKey":"绿联",
"obj": {"name": "test"},
"list": ["1", "2"]
"empty":"",
"company":"ugreen"
}
拼接字符串:
##签名字符串sign_str
ak=DH00002006000029&company=ugreen&count=10&err=true&mac=98:6E:E8:20:25:03&name=fff&searchKey=%E7%BB%BF%E8%81%94&sn=devicesn&ts=1640835564&SecretKey=secret_key_112233ffgghh
md5签名
对拼接字符串md5得到 签名结果.
注意事项
- 签名校验时 需要提前取出 调用方请求参数 sign
- 当前签名计算方式, 不支持参数值 为 object, list的类型 目前处理方式为 该种类型参数 不做签名处理.
AES加解密约定
AES算法
##算法
AES/ECB/PKCS5Padding
##秘钥长度
128位 (字符串16位, 示例: ugreen@nasdamai#)
##测试明文
听说nas卖了100万台
##加密文本(Base64)
O2buoIySMAgH/2DvQKDJqTJ6hXDWi8CAAlM5hcwE9zM=
##在线校验网址
https://aks.jd.com/tools/sec/
AES秘钥长度
- 由于目前约定算法 AES秘钥 限定128位, (长度为16的字符串).
- 目前方案 AES加解密 与 签名 秘钥 共用秘钥 有可能长度不一致.
- 假如 签名秘钥长度大于16, 那么只取前16位字符, 如果小于16位那么后面补”0”.
客户端鉴权
基于access_token鉴权
数据加解密
基于云端 & 客户端约定的固定秘钥 AES加解密