Cloudant auth: отсутствует база данных _users

Я получаю настройку с CouchDB на Cloudant, и я в замешательстве, потому что Cloudant, похоже, делает auth иначе, чем обычный CouchDB. В частности, Cloudant, похоже, не имеет базы данных _users.

Я прочитал "FAQ" https://USERNAME.cloudant.com/DATABASE/_security):

{ "cloudant": {      "никто": [ "_reader", "_writer", "_admin" ]}, "reader": {      "names": [ "demo" ], "role": []}}

Эти инструкции работали нормально и позволили мне обновить объект _security базы данных.

Непонятно, как настроить базу данных _users. Он не существовал автоматически, поэтому я попытался создать его с помощью регулярного:

curl -X PUT $COUCH/_users

Это сработало нормально, но когда я пытаюсь добавить нового пользователя в _users следующим образом:

curl -HContent-Type:application/json \
  -vXPUT $COUCH/_users/org.couchdb.user:me \
  --data-binary '{"_id": "org.couchdb.user:me","name": "me","roles": [],"type": "user","password": "pwd"}'

Кажется, что документ создан правильно:

{"ok":true,"id":"org.couchdb.user:me","rev":"3-86c3801fdb8c32331f5f2580e861a765"}

Но у нового пользователя в _users на Cloudant отсутствует хешированный пароль:

{
   "_id": "org.couchdb.user:me",
   "_rev": "3-86c3801fdb8c32331f5f2580e861a765",
   "name": "me",
   "roles": [
   ],
   "type": "user",
   "password": "pwd"
}

Поэтому, когда я пытаюсь выполнить аутентификацию у этого пользователя, я получаю следующую ошибку:

{"error":"bad_request","reason":"missing password_sha property in user doc"}

В моей локальной установке CouchDB создание нового пользователя в _users автоматически создаст хешированный пароль:

{
   "_id": "org.couchdb.user:test",
   "_rev": "1-9c1c4360eba168468a37d7f623782d23",
   "password_scheme": "pbkdf2",
   "iterations": 10,
   "name": "test",
   "roles": [
   ],
   "type": "user",
   "derived_key": "4a122a20c1a8fdddb5307c29078e2c4269abffa5",
   "salt": "36c0c05cf2a3ee321eabd10c46a8aa2a"
}

Я попытался скопировать документ "_design/_auth" из моей локальной установки CouchDB в Cloudant, но результаты те же - без хэшированного пароля.

В какой-то момент я, кажется, сошел с рельсов, но я не знаю, где это произошло. Как я могу настроить Cloudant для использования того же типа auth, что и обычный CouchDB?

Ответы

Ответ 1

Я нашел ответ через #cloudant IRC:

09:59 < + kocolosk > создание _users было правильным решением

09:59 < + kocolosk > API соответствует более старой версии CouchDB, где пароли, необходимые для хэширования клиентской стороны

10:00 <jbeard> о, я вижу

10:00 < + kocolosk > мы обращаемся к тому, что отсутствие поддержки автоматического хеширования

10:01 <jbeard> Я пытаюсь найти документацию на хэшировании на стороне клиента в Couch.

10:02 <jbeard> Какая версия Couch - Cloudant, предназначенная для совместимости с _users?

10:04 < + kocolosk > jbeard: http://wiki.apache.org/couchdb/Security_Features_Overview

10:04 < + kocolosk > см. "Генерация пароля_sha (применимо только для 1.1.x и более ранних версий)"

10:04 < + kocolosk > jbeard: эта особенность - это последний бит, в котором мы совместимы с 1.1.x, но не более новой версией

10:05 <jbeard> Отлично

10:05 <jbeard> Что мне нужно знать

Ответ 2

Фактически, cloudant не поддерживает генерирование хэш-значения. Я нашел эту альтернативу, которая помогает использовать _users db в облачной службе...

https://github.com/doublerebel/cloudant-user