【问题标题】:node-red - Node Credentialsnode-red - 节点凭据
【发布时间】:2018-01-15 21:27:48
【问题描述】:

在节点红色流中,我有一个带有用户并通过的 CassandraDatabase 节点。当我导出流时,这些凭据不包含在 json 中,而是显示一个带有加密字符串的 flow_cred.json 文件:

{"$": "df28.......

...但是,如果我将此文件复制出来并尝试在其他地方调出我的节点红色实例,我会在启动时得到以下信息:

[警告] 加载凭据时出错:SyntaxError: Unexpected token � in JSON at position 0

... 后跟重复的“AuthenticationError:未设置身份验证提供程序”消息。实际上,节点红色流尚未获取凭据,因此我必须再次手动输入。

有人知道让我成功导出凭据的诀窍吗?

【问题讨论】:

    标签: credentials node-red


    【解决方案1】:

    凭证文件 (flows_cred.json) 默认加密,以确保其内容不易被读取。

    如果您没有在设置文件中提供随机密钥,Node-RED 会生成一个用于加密的随机密钥。如果 Node-RED 的第二个实例没有相同的加密密钥,它将无法解密文件。

    以下是解决此问题所需的步骤。

    1. 编辑您的settings.js 文件并添加一个credentialSecret 属性以及您想要的任何字符串值。如果要禁用加密,请将其值设置为false

      credentialSecret: "my-random-string"
      
    2. 重新启动 Node-RED 并部署更改 - 这将触发 Node-RED 使用您选择的密钥重新加密您的凭据(如果设置为 false,则禁用加密)。

    3. 然后您可以将流/凭据文件复制到第二个实例,只需确保在其设置文件中为其提供相同的 credentialSecret 值。

    请注意,一旦设置了credentialSecret,就无法更改其值。

    【讨论】:

    • 这也适用于运行 node-red 的 docker 容器。您需要使用一个卷,例如/home/user/node_red_data:/data,在那个/home/user/node_red_data 中,您会看到许多新文件,例如flows.json,它们保存了容器的流程,其中还有settings.js,您可以在其中取消注释 //credentialSecret: "a-secret-key", 并更改为您自己的字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    相关资源
    最近更新 更多