CouchDB设置访问权限

1.修改CouchDB的配置文件,设置授权认证:
①找到couchdb配置文件位置,修改local.ini配置文件。
如:D:\CouchDB\etc\local.ini
②修改[couch_httpd_auth]下的require_valid_user = false属性,先将其注释去掉,再将false修改成true。如下图:

③找到couchdb配置文件位置,修改default.ini配置文件。
如:D:\CouchDB\etc\default.ini
④修改[chttpd]下的require_valid_user = false属性,将false修改成true。如下图:

⑤重启couchdb服务
⑥使用浏览器访问网址localhost:5984/_utils 则会弹出输入用户名和密码的输入框。如下图:

⑦设置完以上这些就不能直接访问了,会要求输入账号和密码,也可以在访问CouchDB的地址栏加上账号和密码,直接访问,比如:http://admin:123456@localhost:5984/_utils,如下图所示:

访问进去后,地址栏会自动隐藏admin:123456@:

2.进入CouchDB后,点击左侧菜单栏的Setup,如下图所示:

然后点击Configure a Single Node,进入如下页面:

直接点击Configure Node,然后点击左侧菜单栏的Databases,可以看到数据库多了三个库,如下图所示:

3.配置CouchDB,添加只读用户:
发送http请求:

添加成功response结果为:

然后在couchDB的_users库中可以看到新添加的用户:

4.设置只读用户(比如:jan):
进去kalix库,点击Permissions,在Admins的Roles中添加[“admin”],在Members的Users中添加只读用户,比如jan。

然后创建文档:

文档内容如下:
{
“_id”: “_design/auth”,
“language”: “javascript”,
“validate_doc_update”:“function(n,o,u){if(n._id&&!n._id.indexOf(”_local/"))return;if(!u||!u.roles||u.roles.indexOf("_admin")==-1){throw({forbidden:‘Denied.’})}}"
}

创建成功后,可以在Design Documents中看到。

此时CouchDB配置只读用户已完成。

5.用nginx反向代理CouchDB,实现只读用户的访问。

修改nginx的配置文件\nginx-1.12.2\conf\nginx.conf;

①:anth_basic开启使用“HTTP基本认证”(HTTP Basic Authentication)协议的用户名密码验证。参数off可以取消继承自上一个配置等级auth_basic指令的影响。
auth_basic_user_file指定保存用户名密码的文件,格式如下:

密码应该使用crypt()函数加密。可以用Apache HTTP Server发行包中的htpasswd命令或者openssl passwd来创建此类文件。
auth_basic off 参数off表示不开启HTTP基本认证。

②③:默认的请求头Host为:Host $host
但是在访问地址http://localhost:80/_utils时,地址会自动变成
http://localhost?/_utils,所以修改为如下配置:
Host h o s t : host: host:server_port
X-Real-IP $remote_addr
加上这去之后,在请求地址http://localhost:80/_utils时,地址就不会自动变成http://localhost:/_utils
④:客户端发送http请求服务器发现配置了http auth,于是检查request里面有没有"Authorization"的http header如果有,则判断Authorization里面的内容是否在用户列表里面,Authorization header的典型数据为"Authorization: Basic jdhaHY0=",其中Basic表示基础认证, jdhaHY0=是base64编码的"user:passwd"(设置为只读权限用户的用户名和密码)字符串。如果没有,或者用户密码不对,则返回http code 401页面给客户端。标准的http浏览器在收到401页面之后,应该弹出一个对话框让用户输入帐号密码;并在用户点确认的时候再次发出请求,这次请求里面将带上Authorization header。

你可能感兴趣的:(CouchDB设置访问权限)