【问题标题】:CouchDB Proxy Authentication Doesn't workCouchDB 代理身份验证不起作用
【发布时间】:2017-03-19 14:43:16
【问题描述】:

当我向我的 couchdb 服务器发送一个 http 请求时,就像这里的文档 CouchDB Proxy Authentication 中显示的那样,它不会给出文档中显示的响应,只是空数据。我做错了什么?

另外,我可以使用此代理身份验证启动会话吗?如果我尝试 POST /_session,我会收到 500 错误代码。

GET /_session HTTP/1.1
主机:127.0.0.2:5984
用户代理:curl/7.51.0
接受:应用程序/json
内容类型:应用程序/json;字符集=utf-8
X-Auth-CouchDB-用户名:约翰
X-Auth-CouchDB-Roles:博主

"userCtx":{"name":null,"roles":[]},
"info":{"authentication_db":"_users","authentication_handlers":[ "cookie","默认"]}}

【问题讨论】:

    标签: authentication proxy couchdb


    【解决方案1】:

    代理身份验证自 CouchDB 2.1.1 起已修复。 latest (>2.1.1) documentation 展示了如何再次配置代理身份验证,以及重要的 proxy_use_secret 选项。

    【讨论】:

      【解决方案2】:

      我在 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/_session API 上使用这些标头什么都不做。

      【讨论】:

      • 它已在 2.1.0 中修复,但文档错误地引用了旧的 [httpd] 部分。您现在必须在 [chttpd] 下配置它。
      • 允许用户在标题中传递他的角色不是违反安全性吗?为什么他不能通过'admin'?谢谢
      • 在我的用例中,数据库对所有用户公开可用。我认为这是根据 CouchDb 身份验证文档的用例“代理身份验证在您的应用程序已经使用一些外部身份验证服务并且您不想在 CouchDB 中复制用户及其角色的情况下非常有用。”
      • 我不确定,但我相信代理身份验证标头中的角色只是一个文本字符串,并不涉及数据库访问的数据库成员或管理员角色。我认为所有代理身份验证用户都只是会员。
      【解决方案3】:

      在 CouchDB 2.0 中损坏的不是代理身份验证本身,只是在当前版本中无法像过去 1.6 天那样配置身份验证处理程序。

      问题跟踪器中提到了一些补丁,它们将代理身份验证添加到身份验证处理程序列表中。此外,还有一个拉取请求被接受并合并,这将可配置性带回了 CouchDB 2.0。

      但是,为了利用这些优势,恐怕您要么必须等到下一个版本,要么自己从源代码构建 CouchDB 2.0。

      【讨论】:

      • 谢谢你的解释。我也这么想,因为无论我在 local.ini 中放置了哪些身份验证处理程序,它总是只响应 cookie 和默认值。
      • 请注意,提到的恢复可配置性的拉取请求现在是最近官方 2.1 版本的一部分。
      • @dmunch 代理身份验证是否默认需要其密码?
      猜你喜欢
      • 2019-01-01
      • 1970-01-01
      • 2018-05-06
      • 2012-10-04
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      相关资源
      最近更新 更多