首页 > 解决方案 > Nodered httpauth 节点 文件类型凭证

问题描述

我尝试使用 Nodered v0.18 创建一个简单的 REST 服务器。为了保护节点,我下载了 node-red-contrib-httpauth,它可以提供访问 http 节点的基本凭据。这个阶段很正常。

所以节点

输入:HTTP -> httpauth -> 输出:HTTP

输入:HTTP 属性

Method = GET
URL = /rest/test.json
Name = Auth

我想创建多个登录用户名/密码对。所以 httpauth 中最好的配置是使用“文件”。

我创建了一个包含这些内容的 .txt 文件

username1:realm1:password1
username2:realm1:password2
username3:realm1:password3

存储在 E:\somefilename.txt

然后我添加新的 node-red-contribs-httpauthfile

Name = anyname
Auth Type = Basic
Realm = realm1
File = E:\somefilename.txt

在编辑 HTTP 身份验证节点页面

Name = anyname
Auth Type = Basic
Realm = realm1
Username = 
Password = 
Hashed = false or untick

然后我转到 URL http://thisismytestdomain.com:1880/rest/test.json 弹出基本凭证对话框“至少这部分工作”

我尝试输入username1,username2无法登录或凭证错误。然后它通过 username3 我尝试改变层次结构

username3:realm1:password3
username2:realm1:password2
username1:realm1:password1

它总是底部的一个得到认证。

不知道为什么。尝试 google 并去 GitHub 了解代码。不走运 GitHub 中的代码看起来很合理,应该可以工作,但不确定为什么它总是只能选择最后一个条目。

标签: node-red

解决方案


这有点猜测,因为我还没有真正尝试过。

查看源代码,这里它使用“\n”分割文件中的行。假设您的文件具有 CR/LF 结尾,则第一个密码将以 CR 为后缀,第二个到倒数第二个用户名将以 CR 为前缀。因此,唯一可以正确解释的是最后一个——这就是你所看到的。

如果是这种情况,您必须编辑文件以具有 Unix 样式的行尾(仅 LF)而不是 DOS/Windows 样式(CR/LF)。

顺便说一句,有人打电话oups13(这是你吗?)在 2018 年 6 月对此提出了一个问题,但没有得到答复(请参阅https://github.com/endemecio02/node-red-contrib-httpauth/issues/5)。所以你不是唯一一个有问题的人。


推荐阅读