在couchdb 3中创建新用户而不需要管理员密码。

问题描述 投票:0回答:1

我刚刚下载并安装了CouchDB v3.

在第一次启动时,它提示我设置一个管理员密码,我做了。

对于我正在构建的web应用,我想使用CouchDB的用户认证功能,所以我创建了一个新的 _users 使用Fauxton用户界面创建数据库。

在创建了 _users 数据库,我调用了REST API来插入一个新的用户(这是来自于 文件):

$ 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"}'

而不是预期的答复

{"ok":true,"id":"org.couchdb.user:jan","rev":..."}

我越来越

{"error":"unauthorized","reason":"You are not authorized to access this db."}

当在API调用中添加管理员凭证时,它可以按预期工作。

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

{"ok":true,"id":"org.couchdb.user:jan","rev":"..."}

我的问题是:

有什么设置或权限可以让请求正常运行吗? 必须添加管理员证书?(AFAIK这在 v2.x)

couchdb fauxton couchdb-3.x
1个回答
2
投票

你错过了老牌管理党的乐趣,很多年来,CouchDB的默认设置是这样的,也就是说,它的安装与 安全性,因为每个人实际上都是一个管理员。

从《CouchDB 3.0之路》。安全性[1]

轻松上手的一个方面是1.x时代为了方便使用CouchDB的一个选择:Admin Party。Admin Party意味着,默认情况下,针对CouchDB的任何请求都是在管理员用户的情况下进行的,也就是说,你被允许做任何事情。

3.0改变了这一切,关闭了Admin Party--真是一群杀气腾腾的家伙!

我怀疑有更复杂的解决方案,但对于那些想在党的[2] 迅速,小改小革 etc/local.ini 和任何权限 _users 将满足。

关键是配置属性 require_valid_user[3].

etc/local.ini,修改 chttpdcouch_httpd_auth 部分

[chttpd]
require_valid_user = false

[couch_httpd_auth]
require_valid_user = false

这就够了 除非 有成员和角色定义为 _users 数据库。如果有,必须删除(用Fauxton很容易)。

在清理了成员角色并修改了 etc/local.ini 重新启动CouchDB,您应该能够顺利创建用户。 派对开始! 👍

只是一定要考虑到这种变化的后果。

免责声明--我不建议在任何类似于Admin Party的安全上下文中运行CouchDB!


1 CouchDB 3.0之路。安全 2 派对 3 require_valid_user
© www.soinside.com 2019 - 2024. All rights reserved.