Mongolab REST API如何进行身份验证

时间:2012-09-05 07:03:40

标签: api rest mongodb authentication mlab

Mongolab的REST API很酷。我可以使用Mongolab支持页面上提供的以下javascript直接在我的网站中使用它进行分析。只有我能理解认证的实际运作方式。 URL中提到的API密钥可以被任何查看html源的人轻松复制。 Mongolab控制面板不为我的网站提供任何注册,以确保api密钥仅在来自我的域时才会被验证。 这种认证如何运作?

$.ajax( { url: "https://api.mongolab.com/api/1/databases/my-db/collections/my-coll?apiKey=myAPIKey",
          data: JSON.stringify( { "x" : 1 } ),
          type: "POST",
          contentType: "application/json" } );

3 个答案:

答案 0 :(得分:11)

出色的观察力和很棒的问题。

目前,所有API密钥都具有与用户帐户关联的数据库的读写访问权限,拥有API密钥的任何代理都可以成功发出任何此类请求。

正如您所看到的,这个非常基本的密钥并没有考虑到任何细粒度的安全性。

但是,我们正在开发一系列新的REST API安全功能,旨在实现这一目标。

如果您有兴趣讨论详细信息,请通过support@mongolab.com与我们联系。

答案 1 :(得分:1)

我想将MongoLab服务用于MongoDB的第一个AngularJs应用程序,但MongoLab尚未准备好使用希望从前端访问MongoDB的Web应用程序进行生产。

在浏览器网络流量中获取API密钥非常容易(参见下面的截图,apiKey是纯文本),然后任何人都可以完全访问数据库。所以搞乱MongoDB就没问题了。

我还没有为MongoLab找到解决方法。目前,我想我会使用其他服务,例如https://www.dreamfactory.com/

我还没有详细尝试过,但对于带有MongoDB的AngularApp看起来很棒,我需要检查它们是如何实现api的安全性的。在第一眼看来,看起来它正在使用会话令牌来保护对数据库的请求。

Screenshot network traffic MongoLab credentials

答案 2 :(得分:-1)

您有一个API密钥,用于使用REST API对您的数据库执行http请求。例如,如果用户想要登录,我使用这样的GET方法发出请求:

https://api.mongolab.com/api/1/databases/name_db/collections/users/put_your_params_like_username_and_pw?apiKey=xxxxxxxxx

然后分析对该请求的响应。它不是世界上最安全的数据库,但它正在变得更好。

如果您想了解更多信息,请在我的博客中讨论:http://lolapriego.com/blog/?p=16