Estoy buscando portar un sitio web en CouchDB y me parece muy interesante.CouchDb read authentication using lists
Sin embargo, un gran problema es que CouchDB no parece ser compatible con la autenticación de lectura; todos los documentos dentro de una base de datos son accesibles por todos los lectores.
Se sugiere elsewhere utilizar diferentes bases de datos para diferentes grupos de lectores o implementar la autenticación del lector en otro nivel intermedio, ninguna de las cuales es una opción para este proyecto donde el acceso está determinado por ACL complejas por documento.
Estaba pensando en implementar la autenticación en las listas y restringir todo el acceso al CouchDb a estas listas. Esta restricción podría ser impuesta por las simples cláusulas mod_rewrite en Apache usadas como proxy inverso. Las listas simplemente buscarán la fila y verificarán el UserCtx contra la ACL del documento. Algo así como:
function(head, req) {
var row;
while (row = getRow()) {
if (row.value.ACL[req.userCtx.name])
send(row.value);
else
throw({unauthorized : "You are not allowed to access this resource"});
}
Como no tengo experiencia con CouchDB, y no he leído acerca de este enfoque en cualquier lugar, me gustaría saber si este enfoque podría funcionar.
¿Es esta una forma de implementar el acceso de lectura o estoy abusando de las listas para el propósito equivocado? ¿No debería esperar que una solución tan simple sea posible con CouchDB?
Eche un vistazo a https://github.com/ermouth/covercouch - Implementa ACL de lectura manteniendo intacta la API de REST CouchDB original. – ermouth