小编jig*_*tsn的帖子

安全的客户端couchApp/couchDB用户身份验证

背景研究:

用户通过jquery.couch.js或其他方式注册Couchapp/CouchDB

http://blog.couchbase.com/what%E2%80%99s-new-couchdb-10-%E2%80%94-part-4-security%E2%80%99n-stuff-users-authentication-authorisation -and-权限

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. 有一个couchdb实例坐在互联网地址.
  2. 这个沙发数据库为随机客户端提供了一个html页面和嵌入式javascript脚本,其中包含一个注册/登录表单.
  3. 客户端输入注册信息(名称,密码)并提交
  4. JS脚本使用XMLHttpRequest对象打开与couchdb实例的连接并发送...问题!

问题#1 - 如果凭证存储在代码中(作为新用户数据库的验证发送),那么任何人都可以"查看html源"并接管数据库.

-要么-

问题#2 - 如果未提供凭据并且匿名发送请求,则将在_users数据库中创建新用户,并将发送成功回复消息.但是没有为用户创建新的数据库(并且不能没有管理员凭证),用户可以为特定于应用程序的目的进行交互(例如添加/删除数据).并且 - 从上面的couchbase博客链接 - 如果您使用角色/名称保护您的数据库对抗匿名读者和验证函数以防止匿名写入,那么匿名制作的用户帐户(例如,想要注册数据库空间以使用app)无法做任何事情,因为出于明显的安全原因,匿名用户无法指定他们希望拥有的任何角色.这意味着拥有功能用户的唯一方法是事先创建用户帐户+关联数据库作为管理员,然后分发这些用户凭据 - 就像私人邀请系统一样,是吗?

重申一下,有没有办法,只使用couchdb和couchdb的身份验证处理程序,设计文档函数,客户端ajax等的一些组合,以便连接客户端注册并获得个人数据库(显然只有数据库)他们有访问并可以与之交互?

authentication couchdb couchapp

5
推荐指数
1
解决办法
2474
查看次数

标签 统计

authentication ×1

couchapp ×1

couchdb ×1