1

我刚刚下载并安装了 CouchDB v3

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

对于我正在构建的 Web 应用程序,我想使用 CouchDB 用户身份验证功能,因此我_users使用 Fauxton UI 创建了一个新数据库。

创建_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

4

1 回答 1

4

您错过了旧版 Admin Party 的乐趣,多年来,这一直是 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 之后,您应该能够毫无问题地创建用户。派对!

于 2020-05-05T17:35:21.160 回答