Nodered httpauth节点文件类型凭证

时间:2019-02-20 20:05:20

标签: node-red

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

所以节点

INPUT:HTTP-> httpauth-> OUTPUT:HTTP

INPUT:HTTP属性

$today = date('Y-m-d'); 

 $numrecords = deals::where('published',1)
    ->orwhereDate('expires', '=', '')
    ->orwhereDate('expires', '>=', $today)
    ->count();

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

我已经用这些内容创建了一个.txt文件

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

存储在E:\ somefilename.txt

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

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

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

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

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

我尝试输入用户名1,用户名2无法登录或错误的凭据。然后它通过username3 我尝试更改层次结构,例如

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

它始终是最底层的一个。

不知道为什么。尝试使用google并访问GitHub了解代码。没运气 GitHub中的代码看起来很逻辑,应该可以正常工作,但不确定为什么它总是只能选择最后一个条目。

2 个答案:

答案 0 :(得分:1)

这有点猜测,因为我实际上没有尝试过。

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

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

顺便说一句,有人叫oups13(是您吗?)在2018年6月对此提出了一个未解决的问题(请参阅https://github.com/endemecio02/node-red-contrib-httpauth/issues/5)。因此,您不是唯一遇到问题的人。

答案 1 :(得分:0)

设法通过httpauth V1.0.12尝试使用Nodered v0.18 *希望在将来的更新中能够解决此问题。

感谢Micheal指出这一点,是的,仅选择了最后一个用户名/密码是因为DOS / Windows Line Ending CRLF。

因此使用Unix的人可能没有问题,但是我使用Windows 10和记事本。记事本只有行尾CRLF。所以我不得不下载notepad ++,

转到“编辑”->“ EOL onversion”->“ UNIX / OSX格式”

为进一步预防,我使用UTF-8编码保存文件。 (记住记事本另存为ANSI编码)。

然后将文件放入E:\ unixEOL.txt

然后我转到httpauth节点,然后指向此新文件。现在,我可以访问所有3个用户名和密码对。