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

时间:2015-08-11 08:28:02

标签: ibm-cloud node-red

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

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

2 个答案:

答案 0 :(得分:5)

如果您返回节点红色实例的索引页面,您应该会看到" 下的链接转到您的Node-RED流编辑器"说" 了解如何使用密码保护您的实例" (或只是向下滚动页面)

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

  

密码保护流程编辑器

     

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

     
      
  1. 在Bluemix信息中心中,选择'环境变量'申请页面
  2.   
  3. 添加以下用户定义的变量:      
        
    • NODE_RED_USERNAME - 使用
    • 保护编辑器的用户名   
    • NODE_RED_PASSWORD - 使用
    • 保护编辑器的密码   
  4.   
  5. 点击保存。
  6.   

答案 1 :(得分:1)

如果您希望所有人都可以查看编辑器,但只能由您自己更改,请参阅以下内容:

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

让这个工作的诀窍是添加以下行“default:{permissions:”read“}”以及设置权限的bluemix-settings.js中的前导逗号。通过在仪表板中下载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" }
    }
}