node-red - 节点凭证

node-red - Node Credentials

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

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

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

[警告] 加载凭据时出错:语法错误:JSON 位置 0

中的意外标记 �

... 后跟一条重复的 "AuthenticationError: Authentication provider not set" 消息。事实上,node-red 流程还没有获取凭据,所以我必须再次手动输入。

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

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

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

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

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

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

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

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