首页 > 解决方案 > 保护 NodeRED 仪表板免受不必要的访问

问题描述

我正在尝试创建某种用户身份验证,以防止对我的 NodeRED 用户界面进行不必要的访问。我在网上搜索并找到了 2 个解决方案,但由于某种原因没有解决。他们来了:

  1. 尝试将 httpNodeAuth{user:"user", pass:"password"} 键添加到 bluemix-settings.js 但之后我的仪表板一直提示我输入用户名和密码,即使我输入了通过时定义的密码: “密码”字段。

  2. 添加了用户定义的环境变量 NODE_RED_USERNAME:用户名和 NODE_RED_PASSWORD:密码。但一切都没有改变。

此处建议使用这些解决方案:如何禁止匿名访问 IBM Cloud(Bluemix) 上的 NodeRed UI Dashboard? 谢谢你们的帮助,伙计们!

这是“bluemix-settings.js”的一点点

 autoInstallModules: true,

// Move the admin UI
httpAdminRoot: '/red',

// Serve up the welcome page
httpStatic: path.join(__dirname,"public"),

//GUI password authentication (ALEX)
httpNodeAuth: {user:"admin",pass:"$2y$12$W2VkVHvBTwRyGCEV0oDw7OkajzG3mdV3vKRDkbXMgIjDHw0mcotLC"},
functionGlobalContext: { },

// Configure the logging output
logging: {

标签: ibm-cloudnode-redibm-cloud-functionsibm-cloud-tools

解决方案


如此处的 Node-RED 文档中所述,您需要将如下部分添加到文件settings.js(或者在 Bluemix/IBM Cloud 的情况下为bluemix-settings.js文件。

...
httpNodeAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."},
...

这些pass文件是密码的 bcrypt 哈希。文档中列出了 2 种有关如何以正确方式生成哈希的方法。

  1. 如果您安装了 Node-RED 的本地副本,则可以使用以下命令:

    node-red admin hash-pw
    
  2. 只要您安装了本地 NodeJS,您就可以使用以下内容:

    node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" your-password-here
    

    您可能需要先bcryptjs安装npm install bcryptjs


推荐阅读