背景研究:安全客户端couchApp/CouchDB的用户认证
User Signup in Couchapp/CouchDB through jquery.couch.js or Otherwise
https://issues.apache.org/jira/browse/COUCHDB-1175 - 特别是 “阿里纳贾瑞恩” 的帖子
问题:
解释我上面发布的SO问题:
“基本上我想要在couchdb中注册一个帐户来注册couchapp帐户。这将需要在couchdb _users数据库中创建一个新用户,并创建一个新数据库,新用户分配了数据库管理员角色。所有这些都需要服务器管理员凭据。“
上一个问题的答案涉及使用已作为管理员登录到couchdb的外部单独服务器来监视couchdb并根据需要修改couchdb以响应来自客户端的某些数据事件
我的问题是 - 这是唯一的方法吗?是不是没有达到couchdb的2层web栈的全部目的?是否有某种方法可以从验证函数中修改couchdb数据库,以检查“类型==用户“文件,而”内部“/分别登录作为管理员可能?
我道歉,如果有一些直接的方式来做到这一点,我只是没有'找到正确的文档。
额外的问题澄清:
- 还有就是CouchDB实例坐在一个Internet地址。
- 这个沙发数据库服务于一个随机客户端的HTML页面和嵌入式JavaScript脚本,其中包含注册/登录表单。
- 客户端输入注册信息(名称,密码)并提交
- JS脚本使用XMLHttpRequest对象打开到couchdb实例的连接并发送... PROBLEM!
问题1 - 如果证书存储在代码中(要作为新用户数据库的验证发送),那么任何人都可以“查看html源代码”并接管数据库。
-OR-
问题#2 - 如果未提供证书和请求匿名发送,则新的用户会在_users数据库中创建和成功应答消息将被发送。但是没有为用户创建新的数据库(并且不能没有管理员凭证),用户可以为了特定应用目的(例如添加/删除数据)而与之交互。并且 - 从上面的couchbase博客链接 - 如果您已经使用匿名读取器和验证函数为角色/名称保护数据库以防止匿名写入,那么使用匿名用户帐户(例如,希望注册数据库空间以使用应用程序)不能做任何事情,因为匿名用户出于明显的安全原因不能指定他们希望拥有的任何角色。这意味着使用功能用户的唯一方法是事先创建用户帐户+关联的数据库,然后分发这些用户凭证 - 就像私人邀请系统一样,是的?
重申,有没有什么办法,只使用couchdb和couchdb的身份验证处理程序,设计文档函数,客户端AJAX等的一些组合来注册和获取个人数据库(并且只有该数据库显然)他们有权访问和可以互动?
[用户注册Couchapp/CouchDB通过jquery.couch.js或其他](http://stackoverflow.com/questions/5305543/user-signup-in-couchapp-couchdb-through-jquery-couch -js-or-otherwise) – 2012-02-29 13:23:12
我在我的问题的“背景研究”部分中列出了这个问题(因此这两个问题现在链接在一起)。我创建了这篇文章,因为另一个问题的建议解决方案涉及在couchdb层添加另一个迷你层,我想知道是否存在针对此问题的“纯粹”couchdb解决方案。我会张贴到上述链接,但我不想劫持别人的问题。 – jigritsn 2012-02-29 16:31:11
这个问题当然是相关的。我想要一个纯粹安全的,只有couchdb的解决方案 – gregm 2012-06-04 18:33:50