NodeRed base64 编码的实现
2021/11/20 12:39:59
本文主要是介绍NodeRed base64 编码的实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
起因:
EMQ X 的 HTTP API 使用 Basic 认证 (opens new window) 方式,EMQ X 的 HTTP API 使用 Basic 认证 (opens new window) 方式,id
和 password
须分别填写 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" ] ] } ]
这篇关于NodeRed base64 编码的实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南