3

我已经使用 Bluemix 上的 Starter Boilerplate 创建了一个 NodeRed 应用程序。我注意到的一件事是我的流编辑器可供公众使用(即匿名访问可以编辑我的节点并进行部署)。

如何防止匿名访问 Bluemix 上的 Flow Editor?

4

2 回答 2

5

如果您返回 node-red 实例的索引页面,您应该会在“ Go to your Node-RED flow editor ”下看到一个链接,上面写着“ Learn how to password-protect your instance ”(或者只是向下滚动页面)

这将带您了解如何使用环境变量为流程编辑器设置用户名和密码

密码保护流程编辑器

默认情况下,编辑器对任何人都是开放的,可以访问和修改流程。密码保护编辑器:

  1. 在 Bluemix 仪表板中,为您的应用程序选择“环境变量”页面
  2. 添加以下用户定义的变量:
    • NODE_RED_USERNAME - 保护编辑器的用户名
    • NODE_RED_PASSWORD - 保护编辑器的密码
  3. 单击保存。
于 2015-08-11T08:39:25.137 回答
1

如果您希望编辑器可供所有人查看,但只能由您自己更改,请参见下文:

添加用户名和密码环境变量后,每次进入 Bluemix 应用程序的 node-RED 编辑器时都会出现登录屏幕。如果您希望编辑器可供所有人查看,但只能由您自己更改,您可以修改 bluemix-settings.js 文件。这将允许每个人查看应用程序,但不能保存所做的任何更改或部署应用程序。在部署之前,您现在需要登录编辑器的右上角。

让它工作的技巧是在设置权限的 bluemix-settings.js 中添加以下行“default: { permissions: "read" }" 以及前导逗号。通过在仪表板中下载 Bluemix 应用程序的源代码来访问该文件。更改后,您将需要使用 cloud foundries 命令并推回您的代码更改(cf push)。您对 Bluemix 应用程序源代码所做的任何更新都不会影响 node-RED 编辑器,因为它们是完全不同的实体并且在不同的地方发生了变化。

来自 bluemix-settings.js 的代码片段:

if (process.env.NODE_RED_USERNAME && process.env.NODE_RED_PASSWORD) {
    settings.adminAuth = {
        type: "credentials",
        users: function(username) {
            if (process.env.NODE_RED_USERNAME == username) {
                return when.resolve({username:username,permissions:"*"});
            } else {
                return when.resolve(null);
            }
        },
        authenticate: function(username, password) {
            if (process.env.NODE_RED_USERNAME == username &&
                process.env.NODE_RED_PASSWORD == password) {
                return when.resolve({username:username,permissions:"*"});
            } else {
                return when.resolve(null);
            }
        },
        default: {  permissions: "read" }
    }
}
于 2015-11-18T15:41:29.090 回答