Cloudant auth: baza danych brakujących użytkowników

Zostaję skonfigurowany z CouchDB na Cloudant i jestem zdezorientowany, ponieważ Cloudant wydaje się robić auth inaczej niż zwykły CouchDB. W szczególności Cloudant wydaje się brakować_users Baza danych.

Przeczytałem FAQ autoryzacji Cloudanttutaji zawiera następujące instrukcje:

Czy mogę korzystać z funkcji zabezpieczeń CouchDB (baza danych użytkowników, obiekty zabezpieczeń, funkcje walidacji) na Cloudant?

Tak, możesz. Jeśli chcesz korzystać z bazy danych _users, musisz najpierw wyłączyć własne zabezpieczenia Cloudant dla ról, którymi chcesz zarządzać przez _users. Aby to zrobić, musisz PUT umieścić dokument JSON w następujący sposób w punkcie końcowym _security bazy danych (na przykładhttps://USERNAME.cloudant.com/DATABASE/_security):

{"cloudant": {"nobody": ["_reader", "_writer", "_admin"]}, "readers": {"names": ["demo"], "role": []}}

Te instrukcje działały dobrze i pozwoliły mi zaktualizować obiekt _security bazy danych.

Nie było jasne, jak skonfigurować bazę danych _users. Nie istniał automatycznie, więc próbowałem go utworzyć za pomocą zwykłego:

curl -X PUT $COUCH/_users

To działało dobrze, ale kiedy próbuję dodać nowego użytkownika do _users w następujący sposób:

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"}'

Wygląda na to, że tworzy dokument poprawnie:

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

Ale nowemu użytkownikowi w _users w Cloudant brakuje hashowanego hasła:

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

Więc gdy próbuję się uwierzytelnić u tego użytkownika, pojawia się następujący błąd:

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

W mojej lokalnej instalacji CouchDB utworzenie nowego użytkownika w _users automatycznie utworzy hashed password:

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

Próbowałem skopiować dokument „_design / _auth” z mojej lokalnej instalacji CouchDB do Cloudant, ale wyniki są takie same - bez hasła.

Wydaje mi się, że w pewnym momencie zszedłem z szyn, ale nie wiem, gdzie to się stało. Jak mogę skonfigurować Cloudant, aby używał tego samego rodzaju autoryzacji co zwykły CouchDB?

questionAnswers(2)

yourAnswerToTheQuestion