我尝试使用管理员凭据从远程 NodeRed 服务器导出所有现有流,但收到错误“未经授权”

问题描述 投票:0回答:1

我们公司有一台nodered服务器。当我通过 PC 浏览器进入 nodered 服务器网页时,我只需单击登录按钮,不再要求提供凭据,然后我就进入了。我看到我的用户“abc”为管理员。我可以毫无问题地从 nodered 菜单中将所有流程导出为一个 json 文件。

现在我想通过命令行远程执行此导出。但是,当我尝试使用相同的管理凭据执行命令行代码时(当我在 PC 上登录 Windows 时),我在导出的 json 文件中仅收到文本“未经授权”。在nodered服务器的设置文件settings.js中,我可以看到nodered的身份验证类型为“credentials”。缺什么?为什么我可以手动导出,为什么不能通过命令行远程导出?

C:\>curl -u myuser:mypassword https://myserver:1881/flows -o C:\temp\nodered_flows.json
export node-red
1个回答
0
投票

管理 API 不使用用户名和密码,它使用不记名令牌,如此处文档中所述:

https://nodered.org/docs/api/admin/oauth

您需要根据用户名/密码生成令牌,如下所示:

$ curl http://localhost:1880/auth/token --data 'client_id=node-red-admin&grant_type=password&scope=*&username=admin&password=password'
{
  "access_token": "A_SECRET_TOKEN",
  "expires_in":604800,
  "token_type": "Bearer"
}

用正确的值替换

admin
password

然后您可以使用

调用API
$ curl -H "Authorization: Bearer A_SECRET_TOKEN" http://localhost:1880/flows -o flows.json

请注意,即使像这样导出所有流,API 也永远不会返回链接到该流的任何凭据。

© www.soinside.com 2019 - 2024. All rights reserved.