API鉴权
为提高API访问安全性,OneNET API的鉴权参数Authorization作为Header参数存在。
Authorization计算的核心密钥为accessKey,用户需要使用核心密钥通过签名算法计算签名,与其他参数共同组成鉴权参数,然后将鉴权参数Authorization作为请求Header参数进行鉴权。
通过避免核心密钥在网络上直接传输,增加认证参数时效控制,增加密钥权限粒度控制(即将到来)等方式来提高鉴权安全性,最大限度保证访问安全。
1. API调用示例
(以“查询设备详情API”为例)
GET /devices/35****92 //35****92为平台随机分配的设备ID
Authorization: version=2018-10-31&res=products%2F123123&et=1537255523&method=sha1&sign=ZjA1NzZlMmMxYzIOTg3MjBzNjYTI2MjA4Yw%3D
2. 鉴权参数算法
主要介绍Authorization的计算过程,Authorization用于接口调用,构成参数如下表所示:
名称类型是否必须参数说明参数示例
versionstring是参数组版本号,采用日期格式,目前支持"2018-10-31"2018-10-31
resstring是访问资源 resource
格式为:父资源类/父资源ID/子资源类/子资源ID
见表后的res使用场景说明products/123123
products/123123/devices/78329710
mqs/osndf09nand9f21390
etint是访问过期时间 expirationTime,采用unix时间
当一次访问参数中的et时间小于当前时间时,平台会认为访问参数过期从而拒绝该访问1537255523
表示:北京时间 2018-09-18 15:25:23
methodstring是签名方法 signatureMethod
支持md5、sha1、sha256sha256
signstring是签名结果字符串 signature
2.1 res使用场景说明
使用场景如下表:
场景res参数格式示例说明
API访问products/{pid}products/123123
设备连接products/{pid}/devices/{device_name}products/123123/devices/mydev需使用设备级密钥
2.2 sign签名算法
(1)参数sign的生成算法为:
sign = base64(hmac_(base64decode(accessKey), utf-8(StringForSignature)))
其中:
accessKey为OneNET为独立资源(例如,产品)分配的唯一访问密钥,