当我向我的couchdb服务器发送一个http请求时,就像在CouchDB Proxy Authentication文档中显示的那样,它没有给出文档中显示的响应,只是空数据。我做错了什么?
此外,我能够使用此代理身份验证启动会话吗?如果我尝试POST / _session,我会得到500个错误代码。
GET / _session HTTP / 1.1
主持人:127.0.0.2:5984
用户代理:curl / 7.51.0
接受:application / json
Content-Type:application / json; charset = utf-8
X-Auth-CouchDB-UserName:john
X-Auth-CouchDB-Roles:博客< HTTP / 1.1 200 OK
<缓存控制:必须重新验证
<内容长度:132
<内容类型:application / json
<日期:太阳,2016年11月6日01:10:58 GMT
<服务器:CouchDB / 2.0.0(Erlang OTP / 17)
< { “OK”:真实,
“userCtx”:{ “名”:空, “角色”:[]},
“信息”:{ “authentication_db”: “_用户”, “authentication_handlers” :[ “饼干”, “默认”]}}
答案 0 :(得分:7)
我在CouchDB问题跟踪器中发现代理身份验证在版本2.0.0中已中断。该文档或文档未更新以指示它仅适用于群集或其他内容。我改回了1.6.1版本,一切正常。我必须说有关代理身份验证如何工作的文档非常糟糕。
它的工作原理是你需要你的第三方认证服务器拥有" [couch_httpd_auth]的秘密"当客户端进行身份验证时,您需要通过组合用户名和密码来生成HMAC-SHA1令牌。然后,在您从客户端到CouchDB服务器的任何http请求中,如果包含所有标头:
X-Auth-CouchDB-Roles
X-Auth-CouchDB-UserName
X-Auth-CouchDB-Token
该请求将作为用户客户端进行身份验证。
此外,文档中未提及,但使用这些标头的POST
API上的/_session
不执行任何操作。
答案 1 :(得分:3)
不是CouchDB 2.0中的代理身份验证本身,它只是在当前版本中没有办法配置像旧版本1.6那样的身份验证处理程序天。
问题跟踪器中提到了一些补丁,它们将代理身份验证添加到身份验证处理程序列表中。此外,有一个拉取请求被接受并合并,这带来了CouchDB 2.0的可配置性。
然而,为了利用那些我害怕你要么等到下一个版本,要么自己从源头构建CouchDB 2.0。
答案 2 :(得分:3)
自CouchDB 2.1.1起,代理身份验证已得到修复。 latest (>2.1.1) documentation显示了如何再次配置代理身份验证以及重要的proxy_use_secret选项。