在CouchDB中创建常规用户

IDa*_*nil 62 couchdb

如何在CouchDB中创建常规的非管理员用户?

Gjo*_*ski 91

首先,您将用户放在_users数据库中.文件的ID必须是org.couchdb.user:username,例如

使用CouchDB 1.2.0或更高版本时,请使用:

{
    "_id": "org.couchdb.user:dbreader",
    "name": "dbreader",
    "type": "user",
    "roles": [],
    "password": "plaintext_password"
}
Run Code Online (Sandbox Code Playgroud)

CouchDB中会出现乱码和盐在服务器端对您的密码,并保存在字段中的值password_shasalt(见下文).

使用CouchDB <1.2.0时,用户文档需要如下所示:

{
    "_id": "org.couchdb.user:dbreader",
    "name": "dbreader",
    "type": "user",
    "roles": [],
    "salt": "54935938852dd34f92c672ab31e397cedaf0946d",
    "password_sha": "42253ea4461a604f967813aaff90b139d7018806"
}
Run Code Online (Sandbox Code Playgroud)

请注意,CouchDB 1.3.0及更高版本将使用PBKDF2而不是aha和salt来散列密码.

然后,您可以通过在未版本化的特定数据库中创建具有id _security的文档来创建每个数据库身份验证,例如

{
    "admins": {
        "names": ["dbadmin"],
        "roles": ["editor"]
    },
    "readers": {
        "names": ["dbreader"],
        "roles": ["reader"]
    }
}
Run Code Online (Sandbox Code Playgroud)

这意味着_users除了admin dbadmindbreader之外,还有2个用户.如果您懒得阅读已经建议的文档,那应该这样做.

  • @astroanu:您以明文形式发布它,是的,但是当它从服务器返回给您时(以及此后的每个 GET 请求),返回的只是密码的加盐和散列版本。 (2认同)

Nik*_*ohl 18

CouchDB Wiki有一篇关于CouchDB 安全功能的简短文章,以及如何配置一个类似于关系数据库中用户的"阅读器".

  • 这是对的.对IDanil问题的简短回答是,"在`_users`数据库中创建一个文档." 但是,您的链接解释了所有细节和含义. (3认同)