CouchDB:无需身份validation的用户创build。 标准行为?

对不起,这是/不是问题,但我还没有find可以澄清的文件,或者我一定在这里错过了 。 是标准的行为,你可以简单地创build一个新的用户条目到couchDB(不作为pipe理员用户)在以下方式:

curl -X PUT http://localhost:5984/_users/org.couchdb.user:jan \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{"name": "jan", "password": "apple", "roles": [], "type": "user"}' 

我只是试了一下 它确实工作并创build一个新的用户。 我不确定这是否有意(服务器pipe理员存在,所以它不是pipe理员)。 可以限制/configuration此行为,以防止不必要的大量注册?

编辑:对不起,这不是回答这个问题。 我没有仔细阅读。

标准的行为是“行政党”是什么意思,如果没有创build初始pipe理员(见下文),每个人都是pipe理员。 所以要回答这个问题 – 是的。

CouchDB提供了基本的身份validation机制。

文档位最重要的是: http : //docs.couchdb.org/en/latest/intro/security.html?highlight=security#authentication-database 。 用户存储在authentication数据库中,pipe理员存储在local.ini文件中。 要添加一个pipe理员:

  • findlocal.ini文件,运行命令: couchdb -c
  • 打开local.ini文件
  • [admins]部分取消注释line admin并以纯文本格式添encryption码
  • 重新启动CouchDB。 然后,密码将被encryption(重新打开local.ini检查它)

您可以确定也将adminangular色添加到用户数据库,但即使名称相同,也只是另一个用户。

请参阅http://docs.couchdb.org/en/latest/api/database/security.html

我在这里find了我的问题的答案:

另外,_users数据库现在被视为不同于其他数据库:

 An anonymous user can only create a new document. 

所以, 是的 ,匿名(未经身份validation的)用户可以在CouchDB中创build一个新用户。

为了configuration/限制这个行为,你可以修改_design/_authdevise文档中的validate_doc_update函数,它已经处理了某些用户创build的限制(参见示例 )。 检查!is_server_or_database_admin(userCtx, secObj)在那里已经存在。 要只允许pipe理员添加新用户,您可以:

  throw({forbidden : 'Users can only be created by server or db admins in this specific CouchDB installation'}) 

在声明的开头,禁止任何进一步的行动,当没有authentication为数据库pipe理员。

validate_doc_update的部分如下所示:

 //[… existing code …] !is_server_or_database_admin(userCtx, secObj) { throw({forbidden : 'Users can only be created by server or db admins in this specific CouchDB installation'}) //[… existing code …] }