轻量级堆栈中的CouchDB安全性?

时间:2013-03-01 17:38:36

标签: couchdb

我正在开发一个业余爱好者项目,以便更熟悉CouchDB。这是我第一次使用CouchDB。对于这个项目,我的目标是调查是否可以构建一个只包含HTML,CSS,JavaScript,CouchDB和nginx的Web应用程序(即,我没有在Couch中托管我的任何代码,只是数据)

这可能是非常不切实际的,但我首先想要探索这个堆栈中的所有选项。

目前,我最大的问题是安全问题。假设我在CouchDB中有一些数据库,每个数据库都对应一个托管站点。对于这个例子,我们将专注于单个数据库 - 即单个站点。本网站的部分内容应该可供所有人使用,甚至是匿名用户;只有具有特定角色的用户才能使用其他内容。我有什么选择,每个人的安全性如何?

到目前为止,我已经提出了一些想法,这是我计划在周末工作的一个想法:

  1. 将用户和角色添加到/{site_db}/_security
  2. 添加名为anon的用户,该用户只有一个角色anon
  3. 当用户第一次访问该站点时,我的JS模型将检查当前会话的状态(GET /_session)。
    • 如果不存在会话,JS模型将使用anon帐户进行身份验证。
  4. 在我的设计文档中定义视图。
    • 任何只应对非匿名用户可用的视图应检查userCtx对象上的角色。
    • 验证任何新创建的文档时,应检查userCtx以确定用户的角色是否在白名单中。
  5. 这似乎应该有用,虽然我不禁认为它过于复杂,并且必须有更好的方法。此外,我不确定如何阻止anon用户更新自己的用户文档以添加更多角色。

1 个答案:

答案 0 :(得分:0)

如果您不喜欢CouchDB安全模型,则可以在反向代理中轻松实现。

以下是example with Apache,但似乎是very similar in nginx