Node-RED - 二、编辑器添加用户认证

Node-RED - 二、编辑器添加用户认证

Node RED是一种基于流的编程工具,最初由IBM的新兴技术服务团队开发,现在是OpenJS基金会的一部分。
它提供了一个基于浏览器的可视化编辑器面板,在面板中通过拖拽节点的方式可以实现将将硬件设备、API和在线服务连接在一起,面板中大量节点轻松地将流连接在一起,只需单击一下即可将其部署到运行时。

Node-RED系列文章:
1、Node-RED - 一、添加自定义节点
2、Node-RED - 二、编辑器添加用户认证
3、Node-RED - 三、通过接口操作流程

一、准备

1、本例要实现的目标说明

  • 一般情况下,Node-RED不会单独做为一个系统来使用,而是与其它业务系统集成使用,通过Node-RED来完成流程的配置,然后与业务系统集成做为一个完整的系统为用户提供完成的服务。

  • 本例为Node-RED编辑器页面添加用户认证,这样便于与业务集成,否则没有认证直接集成后,对业务系统的安全造成了极大的威胁。

2、Node-RED系统搭建

参见【Node-RED中添加自定义节点

3、Node-RED身份认证方式

Node-RED编辑器和Admin Api支持下面两种身份认证方式

  • 1、基于用户名、密码和身份认证
  • 2、针对任何OAuth/OpenID提供程序(如Twitter或GitHub)的身份验证

※ 说明:
本例中只实现 基于用户名、密码和身份认证,如果想了解基于OAuth/OpenID的身份认证请参见【官方文档-Securing Node-RED

二、设置身份认证

1、启用身份认证的配置文件

1)、配置文件位置

配置身份认证的配置文件是settings.js,位置是在Node-RED的用户目录

序号系统位置
1WindowsC:\Users\用户名.node-red\settings.js
2Linux~/.node-red/settings.js,或/home/用户名/.node-red/settings.js

※ 说明:

  • 如果您还未运行Node-RED,在Node-RED的用户目录还没有配置文件,您可以手动复制node-red/packages/node_modules/node-red/settings.js 到目标位置。
  • 也可以在在Node-RED启动时,通过命令行参数–settings指定配置文件。

2)、配置文件加载机制

  • 当Node-RED启动时,就会从Node-RED的用户目录查找settings.js,如果没有找到,就把默认配置文件复制到Node-RED的用户目录并使用它。
  • 或者在Node-RED启动时,通过命令行参数–settings指定不同的配置文件。

2、在编辑器或Admin API上启用身份认证

1)、在配置文件启用身份认证

将setting.js文件中下面的代码解注即可

/** To password protect the Node-RED editor and admin API, the following
 * property can be used. See http://nodered.org/docs/security.html for details.
 */
adminAuth: {
	type: "credentials",
	users: [{
		username: "admin",
        password: "$2a$08$cbwARregfRdxFgxFdeaTMeHM72JXqCG4N78o61aUQg1NvOec3VrLO",
        permissions: "*"
    }]
},

注意:在Node RED的早期版本中,可以使用设置httpAdminAuth在编辑器上启用HTTP基本身份验证。此选项已弃用,不应使用

※ 说明:

  • users:是一个用户身份对象数组,可以配置多个身份对象,且每个用户具有不同的权限。
  • password:密码是使用bcrypt算法安全散列的,上面是根据下面命令对123456加密后的密码。

2)、生成Hash密码

  • 方式一:进入Node-RED安装目录,并通过node -e命令来生成
 node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" 您的密码

在这里插入图片描述

  • 方式二:如果您是通过安装的方式安装并运行的Node-RED,则可以通过node-red命令来生成
node-red admin hash-pw

三、验证身份认证

1、重启Node-RED

npm run dev

2、Node-RED身份认证

启动成功后通过浏览器访问http://127.0.0.1:1880后,出现了认证画面,输入配置的用户名:admin,密码:123456完成认证
在这里插入图片描述
在这里插入图片描述
如果账号和密码不对,则提示认证失败,不能进入编辑器
在这里插入图片描述

3、Admin Api身份认证

curl http://192.168.0.100:1880/auth/token --data 'client_id=node-red-admin&grant_type=password&scope=*&username=admin&password=123456'

返回值

{
    "access_token": "fQiKsGqSmrei5/57CWxEwNITCE19gJeQAeMv1C2/J5Qm9ouMAZKj1O/v+TtMBxboFow9IrTMwHuHi1GdDKaRw8VYWkTQnVz54iab+wRXhGX0i5wHlUey+TP1kSvaTCtDFbo9btYxhqSd7BWaM30dUXRg0fmJ2qFfna79yezPfls=", 
    "expires_in": 604800, 
    "token_type": "Bearer"
}

如果失败则返回

{
    "error": "invalid_grant", 
    "error_description": "Invalid resource owner credentials"
}

运行截图
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老杜095

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

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

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

打赏作者

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

抵扣说明:

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

余额充值