我刚刚下载并安装了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的默认设置是这样的,也就是说,它的安装与 零 安全性,因为每个人实际上都是一个管理员。
从《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
,修改 chttpd
和 couch_httpd_auth
部分
[chttpd]
require_valid_user = false
[couch_httpd_auth]
require_valid_user = false
这就够了 除非 有成员和角色定义为 _users
数据库。如果有,必须删除(用Fauxton很容易)。
在清理了成员角色并修改了 etc/local.ini
重新启动CouchDB,您应该能够顺利创建用户。 派对开始! 👍
只是一定要考虑到这种变化的后果。
免责声明--我不建议在任何类似于Admin Party的安全上下文中运行CouchDB!