NodeRed base64 编码的实现

 起因:

EMQ X 的 HTTP API 使用 Basic 认证 (opens new window) 方式,EMQ X 的 HTTP API 使用 Basic 认证 (opens new window) 方式,idpassword 须分别填写 AppID 和 AppSecret。 默认的 AppID 和 AppSecret 是:admin/public。你可以在 Dashboard 的左侧菜单栏里,选择 "管理" -> "应用" 来修改和添加 AppID/AppSecret。

通过链接转到WIKI

基本访问认证

维基百科,自由的百科全书
跳转到导航跳转到搜索

HTTP事务的上下文中,基本访问身份验证HTTP 用户代理(例如Web 浏览器)在发出请求时提供用户名密码的一种方法。在基本的 HTTP 身份验证中,请求包含形式为 的标头字段Authorization: Basic <credentials>,其中凭据是ID 和密码的Base64编码,由单个冒号连接:

它在2015年的RFC  7617 中指定,它从 1999 年起废弃了RFC 2617

 上述这段话最关键的是“其中凭据是ID 和密码的Base64编码,由单个冒号连接:”。在进行Base64编码前数据应该按如下形式准备:admin:public

试验:POSTMAN连接试验:通过HTTP GET请求获取Broker 基本信息

EMQ 详细说明

GET /api/v4/brokers/{node}

 点击Send按钮后获取到EMQ X 服务器返回的消息:

 表明试验成功。但不能止步于此,需进一步探究GET请求发送了怎样的数据。还是利用POSTMAN。

 具体HTTP报文如下:

 下划红线文字就是Authorization: Basic <credentials>格式对应的具体数据,现在“YWRtaW46cHVibGlj”就是admin:public经过Base64编码后的结果。

NodeRed验证:

在NodeRed中利用节点管理安装Base64节点,具体如图:

 一般安装完我自己也不会用,得看例子学习下如何使用,用必应搜索“nodered  base64”,得到如图结果:

点击Base64链接

进入后把Sample Flow的代码导入到NodeRed中,

得到如下流图:

函数节点具体内容如图:注意划红线的字符串(我修改了NodeRed官网的例程)与文章开头提到的数据准备是一样的。

 

 部署后运行得到结果:

 

与POSTMAN的 报文结果是一样的:

 

至此关于HTTP基本访问认证Base64编码问题解决。

 具体源码:

[
    {
        "id": "688fc49188120316",
        "type": "tab",
        "label": "流程 5",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "d2ccae00.2d335",
        "type": "inject",
        "z": "688fc49188120316",
        "name": "",
        "props": [
            {
                "p": "payload",
                "v": "",
                "vt": "str"
            },
            {
                "p": "topic",
                "v": "",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "topic": "",
        "payload": "",
        "payloadType": "str",
        "x": 230,
        "y": 360,
        "wires": [
            [
                "e03cae10.1fc35"
            ]
        ]
    },
    {
        "id": "b778ef09.48871",
        "type": "base64",
        "z": "688fc49188120316",
        "name": "",
        "action": "",
        "property": "payload",
        "x": 525.5,
        "y": 361,
        "wires": [
            [
                "6295d1b1.9d6a3",
                "46b597ba.b94a68"
            ]
        ]
    },
    {
        "id": "6295d1b1.9d6a3",
        "type": "debug",
        "z": "688fc49188120316",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 724,
        "y": 361,
        "wires": []
    },
    {
        "id": "ead9e7c9.152618",
        "type": "debug",
        "z": "688fc49188120316",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 724,
        "y": 441,
        "wires": []
    },
    {
        "id": "46b597ba.b94a68",
        "type": "base64",
        "z": "688fc49188120316",
        "name": "",
        "action": "",
        "property": "payload",
        "x": 525.5,
        "y": 441,
        "wires": [
            [
                "ead9e7c9.152618"
            ]
        ]
    },
    {
        "id": "1c9124e9.e36edb",
        "type": "inject",
        "z": "688fc49188120316",
        "name": "",
        "repeat": "",
        "crontab": "",
        "once": false,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 1889,
        "y": 314,
        "wires": [
            []
        ]
    },
    {
        "id": "48a892ea.b7576c",
        "type": "debug",
        "z": "688fc49188120316",
        "name": "",
        "active": true,
        "console": "false",
        "complete": "false",
        "x": 2285,
        "y": 411,
        "wires": []
    },
    {
        "id": "e03cae10.1fc35",
        "type": "function",
        "z": "688fc49188120316",
        "name": "",
        "func": "msg.payload = new Buffer.from(\"admin:public\");\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 364,
        "y": 361,
        "wires": [
            [
                "b778ef09.48871"
            ]
        ]
    }
]

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

armcsdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值