认证

Node-RED 管理 API 通过 settings.js 文件中的 adminAuth 属性进行保护。安全部分描述了该属性的配置方式。

如果未设置该属性,则任何具有 Node-RED 网络访问权限的人都可以访问 Node-RED 管理 API。

步骤 0 - 检查认证方案

/auth/login 发送 HTTP GET 请求会返回当前的认证方案。

curl 示例:
curl https://:1880/auth/login

在当前 API 版本中,有两种可能的结果:

无活动认证
{}

所有 API 请求都无需提供任何进一步的认证信息即可发出。

基于凭证的认证
{
  "type": "credentials",
  "prompts": [
    {
      "id": "username",
      "type": "text",
      "label": "Username"
    },
    {
      "id": "password",
      "type": "password",
      "label": "Password"
    }
  ]
}

API 通过访问令牌进行保护。

步骤 1 - 获取访问令牌

通过向 /auth/token 发送 HTTP POST 请求,用于交换用户凭证以获取访问令牌。

必须提供以下参数:

  • client_id - 标识客户端。目前,必须是 node-red-adminnode-red-editor
  • grant_type - 必须是 password
  • scope - 请求的权限列表,以空格分隔。目前,必须是 *read
  • username - 要认证的用户名
  • password - 要认证的密码
curl 示例:
curl https://: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"
}

步骤 2 - 使用访问令牌

所有后续的 API 调用都应在 Authorization 头部中提供此令牌。

curl 示例:
curl -H "Authorization: Bearer A_SECRET_TOKEN" https://:1880/settings

撤销令牌

当不再需要令牌时,应将其通过 HTTP POST 发送到 /auth/revoke 以撤销。

curl 示例:
curl --data 'token=A_SECRET_TOKEN' -H "Authorization: Bearer A_SECRET_TOKEN" https://:1880/auth/revoke