You need to enable JavaScript to run this app. CouchDB 3.1.1 _users库普通用户调用/_session接口认证失败问题
优惠活动
大模型
产品
解决方案
定价
更多

CouchDB 3.1.1 _users库普通用户调用/_session接口认证失败问题

问题原因

CouchDB 3.1.1 相对 1.6.1 版本有两处核心认证逻辑变更,你当前的操作和配置没有适配这两处变更,才会出现普通用户认证失败的问题:

  • 创建用户的请求路径错误:CouchDB 3.x 版本认证逻辑读取的是集群级 /_users 数据库的数据,你写入的是节点本地路径 /_node/_local/_users,这部分数据不会被全局认证逻辑识别,自然校验失败。
  • 密码迭代次数配置不匹配:1.6 版本的密码哈希迭代次数配置在 couch_httpd_auth 段,3.x 版本将该配置迁移到了 couch_password_hasher 段,你只配置了前者,导致创建用户时哈希使用 3.x 默认的 10000 次迭代,校验时读取配置的 10 次迭代,二者不一致导致密码校验失败。

解决步骤

  1. 删除之前写入节点本地的无效用户
$ curl -X DELETE "http://my_main_admin:*****@127.0.0.1:5984/_node/_local/_users/org.couchdb.user:my_new_user?rev=1-f1fa0870666d17d7324e54128dfbcacb"
  1. 调整CouchDB配置,新增密码哈希器配置段
    在配置文件中添加如下内容,和你现有的迭代次数配置对齐:
[couch_password_hasher]
pbkdf2_iterations = 10

修改完成后重启CouchDB服务生效。

  1. 向集群级/_users库重新创建用户
$ curl -s -H "Content-Type: application/json" -X PUT "http://my_main_admin:*****@127.0.0.1:5984/_users/org.couchdb.user:my_new_user" --data '{"name": "my_new_user", "password": "my_new_user", "roles": [], "type": "user"}'
  1. 校验用户文档正确性
    请求用户文档确认密码哈希相关字段生成正常:
$ curl "http://my_main_admin:*****@127.0.0.1:5984/_users/org.couchdb.user:my_new_user"

返回结果中存在derived_key、salt、iterations三个字段,且iterations值为10即为配置生效。

  1. 测试会话创建,此时即可正常返回认证成功结果。

内容的提问来源于stack exchange,提问作者Aproram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 12:15:05