跳至主要內容

硬件鉴权接入


设备的激活登录鉴权流程

  • 注册
  • 登录
  • 鉴权

这里跟传统的账号注册,登录是差不多的,只是换了下概念。

**前期准备:**登录管理后台--->创建产品(如果还没的)--->导入设备号到对应的产品下--->品牌秘钥(如果还没有,或者新的品牌)创建品牌秘钥--->接入开发

注册

三元组信息

注册时所需要的三元组信息:

  • productKey 产品Key(在物连网云平台里是bid)
  • secretKey产品秘钥(在物连网云平台里是secret_key)
  • deviceId 设备ID(在物连网云平台里是设备ID)

以上内容,是烧录到设备中的,也就是随着设备出厂,就有的了。其中,pid,secret_key从后台生成。

注册接口

调用地址:

https://app.api.thisiot.com/da/auth/active
  • 请求方法:PUT

  • body请求参数:

    {
        "bid":"productKey(bid)",
        "deviceId":"设备ID",
        "signMethod":"签名方法",
        "sign":"签名内容",
        "timeStamp":"时间戳",
        "sn":"SN号"
    }
    
  • 签名方法,支持MD5、HmacSHA1、HmacSHA256

  • 签名内容:

# 签名内容:deviceId + sn + timeStamp + secretKey
# 比如说:
# deviceId = 1
# sn = 2
# timeStamp = 3
# secretKey = 4 注意,秘钥是从管理中心获取的
# MD5签名内容为:1234,签名结果为:81DC9BDB52D04DC20036DBD8313ED055
# HmacSHA1和HmacSHA256的签名内容为:123,秘钥为4
# HmacSHA1签名结果:51A52A6BFBA5178293DC18F683619C99D6A01101
# HmacSHA256签名结果:E0CA6535AE97A559FD7918760912D22917A588B4D84CC640D3E43EFCC19DED8F
  • 注册(激活)结果返回:

    • 参数错误:50003

      {
          "success":false,
          "code":50003,
          "msg":"对应的参数错误提示",
          "data":null
      }
      
    • 签名错误:50019

      {
          "success":false,
          "code":50019,
          "msg":"签名错误",
          "data":null
      }
      
    • 未知设备:50012,设备未录入

      {
          "success":false,
          "code":50012,
          "msg":"未知设备",
          "data":null
      }
      
    • 激活失败:50000,已经激活过了

      {
          "success":false,
          "code":50000,
          "msg":"激活失败",
          "data":null
      }
      
    • 激活成功:20000

      {
          "success":true,
          "code":20000,
          "msg":"激活成功",
          "data":{
              "deviceSecret":"设备的秘钥"
          }
      }
      

设备的秘钥请加密存储,不可泄露。有了以上的信息,就可以去调用登录接口了。

登录

注册完成以后,返回了设备ID和密码

  • 登录地址

    https://app.api.thisiot.com/da/auth/login
    
  • 请求方法:POST

  • body参数:

    {
        "bid":"品牌ID,管理中心获取",
         "deviceId":"设备ID",
        "deviceSecret":"注册返回的密码",
        "timestamp":"时间戳Long",
        "signmethod":"签名算法",
        "sign":"签名内容"
    }
    
  • 签名请参考上面的签名算法支持:同上

  • 签名内容

    # deviceId = 1
    # deviceSecret = 2
    # timestamp = 3
    # secretKey = 4,注意,秘钥是从管理中心获取的
    # MD5签名内容为:1234,签名结果为:827CCB0EEA8A706C4C34A16891F84E7B
    # HmacSHA1和HmacSHA256的签名内容为:123,秘钥为4
    # HmacSHA1签名结果:491BD81E69EB575DE374B252628B36277DB4884C
    # HmacSHA256签名结果:875F535F3A6F8842B05D6015703571C9DEAB5F540484CA58ABB5FFDDCB617D28
    
  • 返回内容:

    • 参数错误:50003

      {
          "success":false,
          "code":50003,
          "msg":"对应的参数错误提示",
          "data":null
      }
      
    • 签名错误:50019

      {
          "success":false,
          "code":50019,
          "msg":"签名错误",
          "data":null
      }
      
    • 设备未激活:50020

      {
          "success":false,
          "code":50020,
          "msg":"设备未激活",
          "data":null
      }
      
    • 密码错误:50021

      {
          "success":false,
          "code":50021,
          "msg":"密码错误",
          "data":null
      }
      
    • 登录成功:20001

      {
          "success":true,
          "code":20001,
          "msg":"登录成功",
          "data":{
              "token":"令牌"
          }
      }
      

    令牌长期有效,登录旧的会失效。

鉴权

鉴权的本质,就是校验token是否有效。

鉴权地址:

https://app.api.thisiot.com/da/auth/token?token=xxxx
  • 请求方法:GET

  • query参数:token 令牌(也可以放在header上,dev-token,或者cookie里也可以,dev-token)

  • 返回值:

    • 已登录
    {
        "success":true,
        "code":20000,
        "msg":"账号已登录",
        "data":{
            "deviceId":"设备ID",
            "productName":"产品名称",
            "deviceName":"设备名称",
            "sn":"SN号"
        }
    }
    
    • 未登录
    {
        "success":false,
        "code":50001,
        "msg":"账号未登录",
        "data":null
    }
    

仅做鉴权(适用于APP内部鉴权)

image-20240416124029538
image-20240416124029538

第三方鉴权(适用于服务端鉴权)

image-20240416123429934
image-20240416123429934