web-dev-qa-db-fra.com

Création d'utilisateurs réguliers dans CouchDB

Comment puis-je créer des utilisateurs réguliers non administrateurs dans CouchDB?

61
IDanil

Vous mettez d'abord l'utilisateur dans _users base de données. L'ID du document doit être org.couchdb.user:username, par exemple.

Avec CouchDB 1.2.0 ou version ultérieure, utilisez ceci:

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

CouchDB va hacher et saler le mot de passe pour vous côté serveur et enregistrer les valeurs dans les champs password_sha et salt (voir ci-dessous).

Avec CouchDB <1.2.0, le document utilisateur doit ressembler à ceci:

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

Notez que CouchDB 1.3.0 et versions ultérieures utiliseront PBKDF2 au lieu de aha & salt pour hacher le mot de passe.

Ensuite, vous pouvez créer une authentification par base de données en créant un document avec id _security dans une base de données spécifique qui n'est pas versionnée, par exemple.

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

Cela signifie qu'il y a 2 utilisateurs dans _users outre l'administrateur dbadmin et dbreader. Cela devrait être le cas si vous êtes trop paresseux pour lire le document qui a déjà été suggéré.

91
Gjorgji Tashkovski

La documentation CouchDB contient un court article sur les fonctionnalités de sécurité de CouchDB et comment configurer un "lecteur" qui ressemble à cela un utilisateur dans une base de données relationnelle.

17
Nikolaus Gradwohl