用户无法在 CouchDB 的 _users 中访问自己的文档

User cannot access own document in _users in CouchDB

我在 Windows 上使用 CouchDB 3.1.0 时遇到问题。我已经安装了它,在安装过程中创建了一个管理员用户(admin:admin),然后按照文档所述创建了一个用户:

$ curl -X PUT http://admin: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":"1-fd5a90118f51fb895d594f2fdfa9b12f"}

很好。现在让我获取用户文档:

$ curl -X GET http://jan:apple@localhost:5984/_users/org.couchdb.user:jan
{"error":"forbidden","reason":"You are not allowed to access this db."}

我做错了什么?我错过了什么?

它确实在 CouchDB 2.3 中工作,当然。

谢谢。

很遗憾,CouchDB 3.x 的文档已过时。截至今天,安全文档中的 Authentication Database 部分指出:

Users may only access (GET /_users/org.couchdb.user:Jan) or modify (PUT /_users/org.couchdb.user:Jan) documents that they own

但是,它没有声明默认情况下用户无权访问 _users 数据库中的 任何 文档。

为了允许访问,必须首先在设置中将users_db_security_editable标志更改为true,然后清除_users安全对象中的members -> roles列表。默认情况下,此列表中包含 _admin。或者,您可以向用户添加一个角色,然后将该角色添加到 members -> roles

请注意,这将允许用户读取 写入其用户文档的权限。

open Github issue修改文档

其他来源:

https://github.com/apache/couchdb/issues/2881

https://github.com/apache/couchdb/issues/2730