authentication - CouchDB 代理身份验证不起作用

标签 authentication proxy couchdb

当我向我的 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/

    相关文章:

    macos - 如何通过 bash shell 设置代理?

    c# - 在 .NET 中创建有效的数据包嗅探器

    erlang - Centos 6.4 上的 CouchDB 1.3.1

    java - 缓存认证数据

    security - CouchDB:如何设置/获取用户的密码哈希?

    php - Facebook 登录(JavaScript)突然停止工作

    reactjs - 在 react SPA 中自动登录的 localStorage 中 JWT 的替代方案?

    iis - 无法让 IIS ISAPI Tomcat 连接器将 BASIC 身份验证传递给 Tomcat

    java - JDBC 无法登录 LocalDB 实例,但在 SSMS 中我可以登录

    go - "go get"使用http_proxy时忽略GOPROXY