在 couchdb 3 中创建新用户,无需管理员密码

sno*_*pey 3 couchdb fauxton couchdb-3.x

我刚刚下载并安装了 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"}'
Run Code Online (Sandbox Code Playgroud)

而不是预期的反应

{"ok":true,"id":"org.couchdb.user:jan","rev":..."}
Run Code Online (Sandbox Code Playgroud)

我越来越

{"error":"unauthorized","reason":"You are not authorized to access this db."}
Run Code Online (Sandbox Code Playgroud)

将管理员凭据添加到 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":"..."}
Run Code Online (Sandbox Code Playgroud)

我的问题:

我可以设置任何设置或权限来使请求正常工作,而无需添加管理员凭据吗?(据我所知,这在 中效果很好v2.x

Ram*_*ose 6

您错过了旧版管理员组的乐趣,多年来它一直是 CouchDB 的默认设置,这意味着它的安装安全性为零,因为每个人实际上都是管理员。

从 CouchDB 3.0 之路:安全[1]

轻松入门的一个方面是 1.x 时代的选择,以方便使用 CouchDB:管理员组。管理员方意味着,默认情况下,针对 CouchDB 的任何请求都是在管理员用户的上下文中完成的,即您可以执行任何操作。

3.0 通过关闭管理方改变了这一切 - 真是一群嗡嗡声杀了!

我怀疑有更复杂的解决方案,但对于那些想要快速参加[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
Run Code Online (Sandbox Code Playgroud)

这就是所需要的全部,除非为数据库定义了成员和/或角色_users。如果有,则必须将其删除(使用 Fauxton 即可轻松删除)。

清理成员/角色并更改etc/local.ini重新启动 CouchDB 后,您应该能够毫无问题地创建用户。派对!