2010-09-10 15 views
50

¿Cómo puedo crear usuarios regulares que no sean administradores en CouchDB?Crear usuarios regulares en CouchDB

+1

Puede que le interese este artículo de la wiki. http://wiki.apache.org/couchdb/How_to_create_users_via_script – user2247543

+0

¿Cuáles son las reglas de denominación? Parece que no puedo encontrar una respuesta en ningún lado. ¿Puede un nombre de usuario ser una dirección de correo electrónico? – Costa

Respuesta

16

El CouchDB wiki tiene un pequeño artículo sobre el security features de CouchDB y cómo para configurar un "lector" que es lo que se asemeja a un usuario en una base de datos relacional.

+3

Esto es correcto. La respuesta corta a la pregunta de IDanil es: "crea un documento en la base de datos' _users' ". Sin embargo, su enlace explica todos los detalles y las implicaciones. – JasonSmith

-10

Creo que tienes que poner un framework web al frente para hacer esto de la manera en que lo hacen muchos sitios. Los roles de administrador de Couchdb no funcionan en un registro por registro, de modo que si crea un lector que puede leer los perfiles o la tabla de cuentas, puede leer el registro.

76

Primero pones al usuario en la base de datos _users. El ID del documento debe ser org.couchdb.user:username, p.

Con CouchDB 1.2.0 o posterior utilizar este:

{ 
    "_id": "org.couchdb.user:dbreader", 
    "name": "dbreader", 
    "type": "user", 
    "roles": [], 
    "password": "plaintext_password" 
} 

CouchDB se hash de la contraseña & sal para que en el lado del servidor y guardar los valores en los campos password_sha y salt (véase más adelante).

Con CouchDB < 1.2.0 del documento usuario tiene que tener este aspecto:

{ 
    "_id": "org.couchdb.user:dbreader", 
    "name": "dbreader", 
    "type": "user", 
    "roles": [], 
    "salt": "54935938852dd34f92c672ab31e397cedaf0946d", 
    "password_sha": "42253ea4461a604f967813aaff90b139d7018806" 
} 

Tenga en cuenta que CouchDB 1.3.0 y más tarde utilizarán PBKDF2 en lugar de sal AHA & de hash de la contraseña.

A continuación, puede crear por autenticación de base de datos creando documento con id _security en una base de datos específica que no esté versionada, p. Ej.

{ 
    "admins": { 
     "names": ["dbadmin"], 
     "roles": ["editor"] 
    }, 
    "readers": { 
     "names": ["dbreader"], 
     "roles": ["reader"] 
    } 
} 

Esto significa que hay 2 usuarios en _users además del administrador dbadmin y dbreader. Eso debería hacer en caso de que sea demasiado vago para leer el documento que ya ha sido sugerido.

+0

Parece que no puedo entender las convenciones de nomenclatura. ¿Hay alguna restricción sobre el nombre de usuario? Además del prefijo org.couchdb.user: – Costa

+0

, ¿las contraseñas de los usuarios son vistas por todos cuando las almacena? y cómo hash? – astroanu

+0

@astroanu: Usted lo publica en texto claro, sí, pero cuando regresa a usted desde el servidor (y cada solicitud GET a partir de entonces), solo se devuelve la versión salada y hash de la contraseña. – MidnightLightning