有没有办法禁止匿名访问我在 Bluemix 上的 NodeRed Flow Editor?

Is there a way to prohibit Anonymous access to my NodeRed Flow Editor on Bluemix?

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

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

如果返回到 node-red 实例的索引页面,您应该在“转到您的 Node-RED 流编辑器”下看到 link上面写着“了解如何用密码保护您的实例”(或者只是向下滚动页面)

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

Password protect the flow editor

By default, the editor is open for anyone to access and modify flows. To password-protect the editor:

  1. In the Bluemix dashboard, select the 'Environment Variables' page for your application
  2. Add the following user-defined variables:
    • NODE_RED_USERNAME - the username to secure the editor with
    • NODE_RED_PASSWORD - the password to secure the editor with
  3. Click Save.

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

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

使它起作用的诀窍是在设置权限的 bluemix-settings.js 中添加以下行 "default: { permissions: "read" }" 以及前导逗号。通过在仪表板中下载 Bluemix 应用程序的源代码来访问该文件。一旦更改,您将需要使用 cloud foundries 命令并推回您的代码更改(参见 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" }
    }
}