当我向我的 couchdb 服务器发送 http 请求时,如此处的文档中所示 CouchDB Proxy Authentication ,它没有给出文档中显示的响应,只是空数据。我究竟做错了什么?
另外,我可以使用此代理身份验证开始 session 吗?如果我尝试 POST/_session,我会收到 500 错误代码。
GET /_session HTTP/1.1
Host: 127.0.0.2:5984
User-Agent: curl/7.51.0
Accept: application/json
Content-Type: application/json; charset=utf-8
X-Auth-CouchDB-UserName: john
X-Auth-CouchDB-Roles: blogger< HTTP/1.1 200 OK
< Cache-Control: must-revalidate
< Content-Length: 132
< Content-Type: application/json
< Date: Sun, 06 Nov 2016 01:10:58 GMT
< Server: CouchDB/2.0.0 (Erlang OTP/17)
< {"ok":true,
"userCtx":{"name":null,"roles":[]},
"info":{"authentication_db":"_users","authentication_handlers":["cookie","default"]}}
最佳答案
我在 CouchDB 问题跟踪器中发现代理身份验证在 2.0.0 版中被破坏。要么没有更新,要么没有更新文档以表明它只适用于集群或其他东西。我改回 1.6.1 版,一切正常。我必须说代理身份验证如何工作的文档非常糟糕。
它的工作原理是您需要第三方身份验证服务器拥有“[couch_httpd_auth] secret ”,并且当客户端进行身份验证时,您需要通过结合用户名和 secret 来生成 HMAC-SHA1 token 。然后,在您从客户端向 CouchDB 服务器发出的任何 http 请求中,如果您包含所有 header :
X-Auth-CouchDB-Roles
X-Auth-CouchDB-UserName
X-Auth-CouchDB-Token
该请求将作为用户客户端进行身份验证。
此外,文档中没有提到它,而是
POST
在 /_session
使用这些 header 的 API 什么也不做。
关于authentication - CouchDB 代理身份验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40445135/