我已经使用 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 用户名和密码的情况下安全地发出此请求?
如果你在命令中省略了密码,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
再次引用 RestHeart 文档:
RESTHeart 使用基本认证;每个请求都会通过网络发送用户名和密码。使用 http 侦听器并不安全:用户凭据可能会被中间人攻击嗅探。
http://restheart.org/docs/configuration.html
基本身份验证(用户名:密码)似乎是唯一受支持的身份验证模式。RestHeart 建议设置一个 http的监听器,这样你的密码就不能以纯文本形式被嗅探到。