Я получаю настройку с 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?