0

我已经使用 RESTHeart 和 HTTPie 通过下一行连接到我的 MongoDB:

http PUT 127.0.0.1:8080/myfirstdb desc='this is my first db created with restheart' -a username:password

但我认为直接在命令内部使用我的 RESTHeart 用户名和密码是不安全的。如何在不输入我的 REST 用户名和密码的情况下安全地发出此请求?

4

2 回答 2

1

如果你在命令中省略了密码,httpie 会提示它。

http PUT 127.0.0.1:8080/myfirstdb desc='this is my first db created with restheart' -a username

如果成功通过身份验证,RESTHeart 会返回一个身份验证令牌,您可以将其用作进一步调用的临时密码(可以在配置文件中设置它的生存时间)。

这是响应标头的示例:

 Auth-Token: 6a81d622-5e24-4d9e-adc0-e3f7f2d93ac7
 Auth-Token-Location: /_authtokens/user@si.com
 Auth-Token-Valid-Until: 2015-04-16T13:28:10.749Z 

所以你可以这样做(注意用作基本身份验证密码的 auth-token):

http GET 127.0.0.1:8080/myfirstdb restheart' -a username:6a81d622-5e24-4d9e-adc0-e3f7f2d93ac7

另请注意,您应该在生产环境中使用 https。

有关更多信息,请查看 RESTHeart 文档的安全部分https://softinstigate.atlassian.net/wiki/x/W4CM

于 2015-09-09T11:11:21.680 回答
1

再次引用 RestHeart 文档:

RESTHeart 使用基本认证;每个请求都会通过网络发送用户名和密码。使用 http 侦听器并不安全:用户凭据可能会被中间人攻击嗅探。

http://restheart.org/docs/configuration.html

基本身份验证(用户名:密码)似乎是唯一受支持的身份验证模式。RestHeart 建议设置一个 http监听器,这样你的密码就不能以纯文本形式被嗅探到。

于 2015-08-12T07:05:58.850 回答