couchdb custom authentication handler

Должен признаться, что я довольно новичок в этой теме, особенно новичок в erlang. В настоящее время я пытаюсь играть с различными обработчиками аутентификации - цель состоит в том, чтобы иметь работающую "делегированную аутентификацию" на facebook, twitter и т.п.

  1. Насколько я понял, реализация oAuth в couchdb прямо противоположна тому, что мне нужно. Вы можете использовать ее для создания токенов для couch-пользователей, но не для приема twitter accessTokens/secrets и сопоставления их с couch-пользователем.
  2. Я нашел именно то, что мне нужно в datacouch - аутентификация в twitter с помощью nodejs, а затем получение пароля в открытом виде от приватного couch и использование его с помощью _session-API для создания couch 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

Как также упоминалось в комментариях в docs я установил proxy_use_secret в false (для первых шагов), чтобы разрешить аутентификацию без токена доступа.

Когда я теперь делаю GET на http://localhost:5984/_utils/config.html?uname=user1&roles=user, это, кажется, ни на что не влияет...

У кого-нибудь получилось запустить эту штуку? Я что-то упускаю? Или есть ли шанс реализовать пользовательский обработчик аутентификации без кодирования erlang?

Большое спасибо за помощь

6
задан Loïc Faure-Lacroix 17 June 2015 в 20:28
поделиться