REST API MongoDB身份验证

问题描述:

我想在使用MongoDB作为我的主数据库。不过,我的应用程序完全使用JavaScript,并且我想使用REST API,即客户端。REST API MongoDB身份验证

我仍然不明白可以使用哪些安全机制,以便 可以在不向所有 用户透露所有数据的情况下对数据库进行JS调用。

请在这个问题上的意见。

问候, 唐纳德

+0

@Brain,怎么是以任何方式与这个问题有关? AJAX只是一种与其他服务异步对话的方式,与MongoDB REST接口或问题无关。 –

首先,就可以进行数据库身份验证,这将使REST接口需要验证,如果从远程计算机连接。

这就是说,暴露你的数据库是一个非常糟糕的主意,就像你建议的那样。在您熟悉的服务器技术(例如node.js)中构建持久性抽象层,并将所有安全约束和身份验证放在那里。优点很多:

  • 即使MongoDB发生变化,您也可以保持API稳定。如果大多数情况下需要,您甚至可以用另一个持久性解决方案替换它。
  • 您可以限制单个客户端可以放入数据库的负载。如果直接公开数据库,则可以做的很少,以避免人们执行昂贵的查询,甚至可能破坏写入。
  • 如果每个客户端都直接访问数据库,您可以经常进行智能应用程序端缓存和优化(这取决于所讨论的应用程序)。
+0

为什么它不安全?它与已经带有REST接口的CouchDB有什么不同? – BluePython

+0

REST接口并非不安全(虽然是潜在的性能问题),但将数据库接口(RESTful或其他)直接暴露给客户端几乎总是会带来风险。 –

检出Sleepy.Mongoose,它是MongoDB的REST API接口。我没有尝试过,但它似乎支持标准的MongoDB身份验证。

+1

为什么人们经历所有这些麻烦而不是使用CouchDB,或者为什么MongoDB没有标准的REST API接口?不这样做的好处是什么? – BluePython

MongoLab有一个可以访问客户端的REST API托管的MongoDB数据库,他们甚至可以通过其支持文档中的一些基于jQuery的示例。也就是说,Remon是正确的,因为你在公开你的API密钥时牺牲了任何安全性。

RESTHeart是一个用于MongoDB的Web API。

它提供应用程序级授权和认证。

检查security文档部分。

还有些例如应用程序可在GitHub上: