Mongolab REST API 如何进行身份验证

Posted

技术标签:

【中文标题】Mongolab REST API 如何进行身份验证【英文标题】:How does Mongolab REST API authenticate 【发布时间】:2012-08-29 20:39:12 【问题描述】:

Mongolab 的 REST API 很酷。我可以使用 Mongolab 支持页面上提供的以下 javascript 直接在我的网站中使用它进行分析。只有当我能够理解身份验证的实际工作原理时。任何查看 html 源代码的人都可以轻松复制 URL 中提到的 API 密钥。 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"  );

【问题讨论】:

【参考方案1】:

很好的观察,很好的问题。

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

如您所见,这个非常基本的密码在设计时并未考虑到任何细粒度的安全性。

不过,我们正在开发一批新的 REST API 安全功能,旨在实现这一目标。

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

【讨论】:

您似乎已经为此工作了很长时间,虽然我很欣赏开发人员可以通过其他方式自己做这件事,但估计的时间尺度会很有用。 我很想听听更多关于规划方面的信息。是否有指向“一批新的 REST API 安全功能”的链接,以便我可以了解它们将如何工作并可能对我的 2cts 进行权衡? 这方面有什么更新吗?如果 API 不能在客户端使用,那么您的 jquery 示例就没有任何意义。【参考方案2】:

我想将 MongoLab 服务用于我的第一个 AngularJs 应用程序和 MongoDB,但 MongoLab 还没有准备好使用需要从前端访问 MongoDB 的 Web 应用程序进行生产。

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

我还没有找到 MongoLab 的解决方法。目前,我想我会使用另一个服务,比如https://www.dreamfactory.com/

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

【讨论】:

【参考方案3】:

您有一个 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

【讨论】:

以上是关于Mongolab REST API 如何进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章