多協議接入 產品介紹 快速入門 用戶指南 開發指南
EDP TCP透傳 MQTT Modbus HTTP
常見問題

token 算法

token由多個參數構成,如下表:

Item Type 是否必須 參數說明 參數示例
version string 參數組版本號,日期格式,目前僅支援“2018-10-31” 2018-10-31
res string 訪問資源 resource 格式為:父資源類/父資源ID/子資源類/子資源ID 見res使用場景說明 products/123123 products/123123/devices/ mqs/osndf09nand9f21390
et int 訪問過期時間expirationTime,unix時間 當一次訪問參數中的et時間小於當前時間時,平台會認為訪問參數過期從而拒絕該訪問 1537255523 表示:北京時間2018-09-15:25:23
method string 簽名方法signatureMethod 支援md5 、sha1、sha256 sha256
sign string 簽名結果字串signature

關於token參數的特別說明:

res使用場景說明

使用場景如下表:

場景 res參數格式 示例
API訪問 products/{pid} products/123123
設備連接 products/{pid}/devices/{device_name} products/123123/devices/m

sign簽名算法

參數sign的生成演算法為:

sign = base64(hmac_<method>(base64decode(accessKey), utf-8(StringForSignature))) 

其中:

  • accessKey為OneNET為獨立資源(例如,產品)分配的唯一訪問金鑰,其作為簽名演算法參數之一參與簽名計算,為保證訪問安全,請妥善保管
  • accessKey參與計算前應先進行base64decode操作
  • 用於計算簽名的字串StringForSignature的組成順序按照參數名稱進行字串排序,以'/n'作為參數分隔,當前版本中按照如下順序進行排序:et、method、res、version

StringForSignature組成示例如下:

StringForSignature = et + '\n' + method + '\n' + res+ '\n' + version

注意:每個參數均為key=value格式組成,但是僅參數中的value參與計算簽名的字串StringForSignature的組成,若token參數如下

et = 1537255523
method = sha1
res = products/123123
version = 2018-10-31

則用於計算簽名的字串StringForSignature為(按照et、method、res、version的順序)

StringForSignature = "1537255523" + "\n" + "sha1"+ "\n" + "products/123123"+ "\n" + "2018-10-31"

計算出sign後,將每個參數均採用key=value的形式表示,並用'&'作為分隔符號,示例如下:

version=2018-10-31&res=products/123123&et=1537255523&method=sha1&sign=ZjA1NzZlMmMxYzIOTg3MjBzNjYTI2MjA4Yw=

參數編碼

token中key=value的形式的value部分需要經過URL編碼,需要進行編碼的特殊符號如下:

No. 符號 編碼
1 + %2B
2 空格 %20
3 / %2F
4 ? %3F
5 % %25
6 # %23
7 & %26
8 %3D

編碼後,上例中實際傳輸token為:

version=2018-10-31&res=products%2F123123&et=1537255523&method=sha1&sign=ZjA1NzZlMmMxYzIOTg3MjBzNjYTI2MjA4Yw%3D

个搜索结果,搜索内容 “

    0 个搜索结果,搜索内容 “