jig*_*tsn 5 authentication couchdb couchapp
背景研究:
用户通过jquery.couch.js或其他方式注册Couchapp/CouchDB
https://issues.apache.org/jira/browse/COUCHDB-1175 - 特别是"Ari Najarian"的帖子
题:
解释我在上面发布的SO问题:
"基本上我想要一个注册表单,用于在couchdb中为couchapp注册一个帐户.这需要在couchdb _users数据库中创建一个新用户,并创建一个新数据库,新用户被分配了数据库角色admin.所有这些都需要服务器管理员凭据."
上一个问题的答案涉及使用外部单独的服务器作为管理员登录到couchdb以监视couchdb并根据需要修改couchdb以响应来自客户端的某些数据事件.
我的问题是 - 这是唯一的方法吗?这不是打败了couchdb的2层Web堆栈的全部目的吗?有没有办法从验证函数中修改couchdb数据库,该函数检查"type == user"文档,而"内部"/单独以管理员身份登录?
如果有一些简单的方法可以做到这一点,我很抱歉,我只是找不到合适的文档.
额外问题澄清:
问题#1 - 如果凭证存储在代码中(作为新用户数据库的验证发送),那么任何人都可以"查看html源"并接管数据库.
-要么-
问题#2 - 如果未提供凭据并且匿名发送请求,则将在_users数据库中创建新用户,并将发送成功回复消息.但是没有为用户创建新的数据库(并且不能没有管理员凭证),用户可以为特定于应用程序的目的进行交互(例如添加/删除数据).并且 - 从上面的couchbase博客链接 - 如果您使用角色/名称保护您的数据库对抗匿名读者和验证函数以防止匿名写入,那么匿名制作的用户帐户(例如,想要注册数据库空间以使用app)无法做任何事情,因为出于明显的安全原因,匿名用户无法指定他们希望拥有的任何角色.这意味着拥有功能用户的唯一方法是事先创建用户帐户+关联数据库作为管理员,然后分发这些用户凭据 - 就像私人邀请系统一样,是吗?
重申一下,有没有办法,只使用couchdb和couchdb的身份验证处理程序,设计文档函数,客户端ajax等的一些组合,以便连接客户端注册并获得个人数据库(显然只有数据库)他们有访问并可以与之交互?
这不是一个纯粹的沙发解决方案,但它是沙发+节点,并解决了您的问题:
嗨,我有一段时间没来了,没有意识到这已被编辑/链接被删除(加上链接政策不是答案!抱歉......)。我一直在一个与您想要做的事情非常相似的项目上使用 couchdb,不幸的是,如果不添加另一个服务来处理管理员级别的访问和用户数据库的创建,就无法完成您想要完成的事情。Syncpoint-API可以用来促进这一点,但它实际上是一个处理注册/登录和专用数据库设置的 Nodejs 服务。
但到目前为止,Syncpoint 已被证明不是 100% 可靠,而且它似乎确实是一个废弃的项目,因为 CouchBase 吸走了 CouchDB 开发人员的所有研发资源。
我现在正在转向nodejs + socket.io 作为传输层,使用节点进行握手并分配数据库,然后进一步观察服务器上的 couch _changes api(通过另一个节点进程),然后通过套接字转发_changes。 io 到客户端。此外,我还运行了一些“纯”沙发应用程序,它们提供与私有数据混合的公共数据。
我的结论是?CouchDB 是一个很棒的产品,并且具有一些很棒的功能,但是对于现实世界开发中所需的更复杂的登录/授权方案和其他一般应用程序需求,它还没有准备好。
| 归档时间: |
|
| 查看次数: |
2474 次 |
| 最近记录: |