couchdb自定义authentication处理程序

我不得不承认,我对这个话题相当陌生,特别是对于erlang来说是新的。 目前,我正在尝试与各种身份validation处理程序 – 目标是在Facebook,Twitter等有一个工作的“委托身份validation”。

  1. 据我了解,couchdb的oAuth实现正好与我所需要的相反。 你可以使用它来为沙发用户创build令牌,但不接受twitter访问令/秘密并将其映射到沙发用户。
  2. 我在datacouch中发现了我需要的东西 – 使用nodejs对Twitter进行身份validation,然后从私人沙发上获取明文密码,并使用_session-API创build一个沙发cookie。

现在我试图避免存储明文密码。 我听说要使用proxy_authentification_handler,但似乎我太没有经验或甚至太愚蠢的使用它。 我做了(据我所知)在couch_httpd_auth正确的条目

couch_httpd_auth auth_cache_size 50 authentication_db _users authentication_redirect /_utils/session.html require_valid_user false proxy_use_secret false secret xxxxxxxxxxxx timeout 43200 x_auth_roles roles x_auth_token token x_auth_username uname 

也在httpd部分

 httpd allow_jsonp true authentication_handlers {couch_httpd_auth, proxy_authentification_handler},{couch_httpd_auth, cookie_authentication_handler}, {couch_httpd_auth, default_authentication_handler} bind_address 127.0.0.1 default_handler {couch_httpd_db, handle_request} port 5984 secure_rewrites false vhost_global_handlers _utils, _uuids, _session, _oauth, _users 

同样在文档中的注释中提到,我将proxy_use_secret设置为false(用于第一步)以允许没有访问令牌的身份validation。

当我现在对http:// localhost:5984 / _utils / config.html?uname = user1&roles = user进行GET,似乎不会影响任何内容…

有人跑过这个东西吗? 我错过了什么吗? 还是有没有机会实现一个自定义身份validation处理程序而不编码erlang?

非常感谢你的帮助

URL参数没有做任何事情。 当您查看原始错误时,您将看到用户名和angular色不是通过URL传递,而是通过HTTP头传递的:

  • X-Auth-CouchDB-UserName:用户名,(在couch_httpd_auth部分的x_auth_username)
  • X-Auth-CouchDB-Roles:用户angular色,用逗号分隔的angular色列表(在couch_httpd_auth部分的x_auth_roles)
  • X-Auth-CouchDB-Token:令牌来validation授权(在couch_httpd_auth部分中的x_auth_token)。 这个令牌是由密钥和用户名创build的hmac-sha1。 密钥在客户端和couchdb节点中应该是一样的。 秘密密钥是ini的couch_httpd_auth部分的秘密密钥。 如果没有定义密钥,这个令牌是可选的。

一旦你提供这些头信息validation实际上是广告作品。