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