Node-RED 预设是无帐号与密码的,因此若建立在公开的伺服器上就是不安全的,任何人都可以透过 IP 或网域连上平台,且直接修改及部属编辑器上的节点,因此我们要运用其内建的使用者身分验证机制来保护平台的资讯安全。
编辑器和管理员 API 安全性
Editor 和 Admin API 支持两种类型的身份验证:
- 基于用户名/密码凭据的身份验证
- 针对任何 OAuth/OpenID 提供者(例如 Twitter 或 GitHub)进行身份验证
基于用户名/密码的身份验证
要在 Editor 和 Admin API 上启用用户身份验证,请取消注释设置文件adminAuth 中的属性:
adminAuth: {
type: "credentials",
users: [
{
username: "admin",
password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
permissions: "*"
},
{
username: "george",
password: "$2b$08$wuAqPiKJlVN27eF5qJp.RuQYuy6ZYONW7a/UWYxDTtwKFCdB8F19y",
permissions: "read"
}
]
}
该users属性是一个用户对象数组。这允许您定义多个用户,每个用户都可以拥有不同的权限。
上面的这个示例配置定义了两个用户。一个被称为admin有权在编辑器内执行所有操作且密码为password. 另一个调用george who 被授予只读访问权限。
请注意,密码是使用 bcrypt 算法安全地散列的。
注意:在以前的 Node-RED 版本中,该设置httpAdminAuth 可用于在编辑器上启用 HTTP 基本身份验证。此选项已弃用,不应使用。
生成密码哈希
如果您使用的是 Node-RED 1.1.0 或更高版本,则可以使用以下命令:
node-red admin hash-pw
对于旧版本的 Node-RED,您可以:
安装单独的node-red-admin命令行工具并使用以下命令:
node-red-admin hash-pw
或者,找到 Node-RED 的安装目录并使用以下命令:
node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" your-password-here
在所有情况下,您都会取回密码的散列版本,然后您可以将其粘贴到您的设置文件中。