2

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

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

目前,我最大的问题是关于安全性。假设我在 CouchDB 中有几个数据库,每个数据库对应一个托管站点。对于此示例,我们将关注单个数据库——即单个站点。本网站的某些内容应该可供所有人使用,甚至是匿名用户;和其他东西应该只对具有特定角色的用户可用。我有哪些选择,每个选项的安全性如何?

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

  1. 将用户和角色添加到/{site_db}/_security.
    • 根据 Couch 文档{site_db},这样做将需要来自经过身份验证的用户的任何数据请求。
  2. 添加一个名为 的用户anon,该用户只有一个角色,即anon.
  3. 当用户第一次访问该站点时,我的 JS 模型将检查当前会话的状态 ( GET /_session)。
    • 如果不存在会话,则 JS 模型将使用该anon帐户进行身份验证。
  4. 在我的设计文档中定义视图。
    • 应该只对非匿名用户可用的任何视图都应该检查userCtx对象上的角色。
    • 任何新创建的文档的验证都应检查userCtx用户的角色是否在白名单上。

这似乎应该可行,尽管我不禁认为它过于复杂,并且必须有更好的方法。另外,我不确定如何防止anon用户更新他自己的用户文档以添加更多角色。

4

1 回答 1

0

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

这是Apache 的示例,但在 nginx 中似乎非常相似

于 2013-04-04T06:17:12.840 回答