CouchDB代理身份验证不起作用

时间:2016-11-06 01:31:40

标签: authentication proxy couchdb

当我向我的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” :[ “饼干”, “默认”]}}

3 个答案:

答案 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选项。