пользовательский обработчик аутентификации couchdb - PullRequest
6 голосов
/ 23 февраля 2012

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

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

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

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

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

1 Ответ

2 голосов
/ 29 декабря 2012

Параметр URL ничего не делает. Если вы посмотрите на исходную ошибку , то увидите, что имя пользователя и роли передаются не по URL, а по заголовкам HTTP:

  • X-Auth-CouchDB-UserName: имя пользователя, (x_auth_username в разделе couch_httpd_auth)
  • X-Auth-CouchDB-Roles: роли пользователей, список ролей, разделенных запятой (x_auth_roles в разделе couch_httpd_auth)
  • X-Auth-CouchDB-Token: токен для аутентификации авторизации (x_auth_token в разделе couch_httpd_auth). Этот токен является hmac-sha1, созданным из секретного ключа и имени пользователя. Секретный ключ должен быть одинаковым в клиенте и в узле couchdb. секретный ключ - это секретный ключ в разделе couch_httpd_auth ini. Этот токен необязателен, если секретный ключ не определен.

Как только вы предоставляете эти данные заголовка, аутентификация фактически работает так, как объявлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...