authentication couchdb cloudant

authentication - Cloudant auth: carece de la base de datos_users



couchdb (2)

Me estoy configurando con CouchDB en Cloudant, y estoy confundido porque Cloudant parece hacer auth de manera diferente que el CouchDB normal. Específicamente, Cloudant parece carecer de una base de datos _users .

Leí las preguntas frecuentes de autenticación de Cloudant aquí , y me proporcionó las siguientes instrucciones:

¿Puedo usar las características de seguridad de CouchDB (_usuarios de bases de datos, objetos de seguridad, funciones de validación) en Cloudant?

Sí tu puedes. Si desea utilizar la base de datos _users, primero debe desactivar la seguridad de Cloudant para los roles que desea administrar a través de _users. Para hacerlo, debe PONER un documento JSON como el siguiente en el punto final de seguridad de la base de datos (por ejemplo, https://USERNAME.cloudant.com/DATABASE/_security ):

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

Estas instrucciones funcionaron bien y me permitieron actualizar el objeto _security de una base de datos.

Lo que no estaba claro era cómo configurar la base de datos _users. No existía automáticamente, así que traté de crearlo usando un programa regular:

curl -X PUT $COUCH/_users

Esto funcionó bien, pero cuando intento agregar un nuevo usuario a _users de la siguiente manera:

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

Parece crear el documento correctamente:

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

Pero el nuevo usuario en _users en Cloudant carece de una contraseña hash:

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

Entonces, cuando intento autenticar a este usuario, aparece el siguiente error:

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

En mi instalación local de CouchDB, la creación de un nuevo usuario en _users crearía automáticamente la contraseña hash:

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

Intenté copiar el documento "_design / _auth" de mi instalación local de CouchDB en Cloudant, pero los resultados son los mismos, sin contraseña hash.

Parece que me he descarrilado en algún momento, pero no estoy seguro de dónde sucedió esto. ¿Cómo puedo configurar Cloudant para usar el mismo tipo de autenticación que el CouchDB normal?



Encontré la respuesta vía #cloudant IRC:

09:59 <+ kocolosk> crear _users era lo correcto

09:59 <+ kocolosk> la API coincide con una versión anterior de CouchDB donde las contraseñas necesarias para hash del lado del cliente

10:00 <jbeard> oh, veo

10:00 <+ kocolosk> estamos abordando la falta de soporte para el hashing automático

10:01 <jbeard> Estoy tratando de encontrar documentación sobre hash del lado del cliente en Couch.

10:02 <jbeard> ¿Qué versión de Couch es Cloudant con el objetivo de ser compatible con _users?

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

10:04 <+ kocolosk> ver "Generar password_sha (solo aplicable para 1.1.x y anteriores)"

10:04 <+ kocolosk> jbeard: esta característica en particular es el último bit en el que somos compatibles con la versión 1.1.x pero no más nueva

10:05 <jbeard> Excelente

10:05 <jbeard> Eso es lo que necesitaba saber