用户无法为 _session 进行身份验证
Posted
技术标签:
【中文标题】用户无法为 _session 进行身份验证【英文标题】:Users can't be authenticated for _session 【发布时间】:2021-08-10 01:25:42 【问题描述】:我面临一个非常奇怪的问题,我无法使用 (_users) 数据库中的任何用户通过路由 (/_session) 创建会话。它总是给我错误(错误的凭据)。它曾经在 couchdb 1.6.1 中运行良好
对于普通的 couchdb 管理员来说,它工作正常:
$ curl -X POST http://localhost:5984/_session -d 'name=my_main_admin&password=******'
"ok":true,"name":"my_main_admin","roles":["_admin"]
但是对于 couchdb 用户(存储在 _users 中),它不起作用。我认为这与角色无关。
所以我先创建用户:
$ curl -s -H "Content-Type: application/json" -X PUT "http://my_main_admin:*****@127.0.0.1:5984/_node/_local/_users/org.couchdb.user:my_new_user" --data '"name": "my_new_user", "password": "my_new_user", "roles": [], "type": "user"'
"ok":true,"id":"org.couchdb.user:my_new_user","rev":"1-f1fa0870666d17d7324e54128dfbcacb"
然后,如果我尝试使用此用户创建会话,它永远不会起作用:
$ curl -X POST http://localhost:5984/_session -d 'name=my_new_user&password=my_new_user'
"error":"unauthorized","reason":"名称或密码不正确。"
我的 CouchDB 配置看起来不错:
"couch_httpd_auth":
"allow_persistent_cookies": "true",
"auth_cache_size": "50",
"authentication_db": "_users",
"authentication_redirect": "/_utils/session.html",
"iterations": "10",
"require_valid_user": "false"
我曾经在 couchdb 1.6.1 上与普通用户创建会话,但自从我安装了 couchdb 3.1.1 后它就再也没有工作过。我在文档中找不到任何相关信息。 我错过了什么吗?
【问题讨论】:
【参考方案1】:问题是您通过 _node/_local 接口创建用户。用户应通过 _users 集群数据库上的集群 API 创建。
$ 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"' \
/
现在您应该可以使用 _session 端点以新用户身份登录了。
【讨论】:
完美!这就是这里的关键答案!调用正确的接口解决了整个问题,非常感谢!以上是关于用户无法为 _session 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章