我是靠谱客的博主 可爱翅膀,最近开发中收集的这篇文章主要介绍NodeRed 搭建web服务器--②实现与OneNet HTTP数据推送的验证,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 本文思路参考了 玖零大壮的视频和公众号文章,在此表示感谢!

物联网开发 第4讲 中移OneNET HTTP推送服务接入

实验环境:1爱快软路由的端口映射和动态域名设置,并可实现外网访问。

                  2 运行NodeRed的ubuntu server 电脑                 

HTTP数据推送官方说明https://open.iot.10086.cn/doc/v5/develop/detail/632

HTTP推送用于实现平台与应用服务器之间的单向数据通信。平台作为客户端,通过HTTP/HTTPS请求方式,将项目下应用及设备数据推送给应用服务器。HTTP推送服务使用流程包括实例创建、实例验证、规则配置、消息推送4个步骤。

点击验证时,平台服务器会向配置的服务器地址发送HTTP GET请求,进行地址有效性验证,请求形式示例如下:

http://url?msg=xxx&nonce=xxx&signature=xxx

携带参数信息包括:

参数

说明

msg

推送的消息内容。实例验证阶段,为平台生成的随机字符串;接收消息阶段,为平台推送的设备或业务消息数据

nonce

平台生成的随机字符串

signature

加密签名,signature结合了创建实例填写的token参数和请求中的msg、nonce参数。

        应用服务器收到请求后,需要通过signature参数字段对请求进行校验。若确认此次GET请求来自OneNET平台,需在响应中原样返回msg参数,实例验证才能通过,否则验证失败,实例配置不生效。signature参数校验方法如下:

(1) 将实例配置时填写的token参数及校验请求中携带的nonce、msg参数拼接得到字符串A,即A = token + nonce + msg

(2) 将字符串A进行md5加密得到字符串B

(3) 将字符串B进行Base64转换,并通过URL Decode计算后得到参数C,将参数C与signature进行对比,相等则表示校验成功,标识请求来于OneNET平台

如果用户不想验证,可选择跳过该过程直接返回msg参数。实例验证通过后,下一步进行消息源(需要推送的数据)的配置。以下说明以明文方式。

下面说明具体验证过程:

新建HTTP推送实例

 

 建好的但没有验证的实例

 NodeRed端web验证服务器的搭建

 点击HTTP推送实例的“验证”,服务器端回收到如下信息:

 OneNet HTTP推送验证失败,是因为服务器端没有返回任何信息,下一部是要实现原样返回msg,但我们要先实现如何提取msg的信息。流图更改如下:

在function节点添加:msg.payload=msg.payload.msg,然后按部署按钮。

 再次在Onenet 验证,查看服务器是否提取了msg信息

 提取msg信息成功,下一步只要返回给OneNet平台msg信息,即可验证成功。流图添加http response 节点即可。

 再次验证,验证成功!

 

完整流图程序。

[
    {
        "id": "8f2bd4c3cffc1451",
        "type": "tab",
        "label": "流程 2",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "61e8d9d9adc70f05",
        "type": "http in",
        "z": "8f2bd4c3cffc1451",
        "name": "",
        "url": "/node",
        "method": "get",
        "upload": false,
        "swaggerDoc": "",
        "x": 140,
        "y": 140,
        "wires": [
            [
                "8eeceb4c73ac6c7c",
                "be2f1af54fbd56be"
            ]
        ]
    },
    {
        "id": "8eeceb4c73ac6c7c",
        "type": "debug",
        "z": "8f2bd4c3cffc1451",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 330,
        "y": 140,
        "wires": []
    },
    {
        "id": "4b73285128b057b8",
        "type": "debug",
        "z": "8f2bd4c3cffc1451",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 530,
        "y": 220,
        "wires": []
    },
    {
        "id": "be2f1af54fbd56be",
        "type": "function",
        "z": "8f2bd4c3cffc1451",
        "name": "",
        "func": "msg.payload=msg.payload.msgnreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 310,
        "y": 220,
        "wires": [
            [
                "4b73285128b057b8",
                "8725eaf423373ace"
            ]
        ]
    },
    {
        "id": "8725eaf423373ace",
        "type": "http response",
        "z": "8f2bd4c3cffc1451",
        "name": "",
        "statusCode": "",
        "headers": {},
        "x": 530,
        "y": 280,
        "wires": []
    }
]

最后

以上就是可爱翅膀为你收集整理的NodeRed 搭建web服务器--②实现与OneNet HTTP数据推送的验证的全部内容,希望文章能够帮你解决NodeRed 搭建web服务器--②实现与OneNet HTTP数据推送的验证所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部