Couchdb和代理身份验证

qcbq4gxm  于 2022-12-09  发布在  CouchDB
关注(0)|答案(1)|浏览(236)

我已经使用couchdb很长一段时间了,我们通过cookie auth进行身份验证。现在我们想开始测试代理身份验证,但我不太明白它是如何工作的。
我已经激活了它,在“chttpd / authentication_handlers:“部分中包含了值“chttpd_auth,proxy_authentication_handler”,但是我如何指示令牌x是给用户y的?
我不明白它是怎么运作的
我希望有人能举个例子。谢谢。

jogvjijk

jogvjijk1#

proxy_authentication中,你是在其他地方进行身份验证的,这个其他地方是一个代理,或者更具体地说是一个反向代理。
例如,如果您只使用一个用户,并使用nginx作为couchdb的代理,则在将请求传递到couchdb之前,您需要设置所需的头,如下所示:

location / {
    # pass to couchdb
    proxy_pass http://localhost:5984;

    # ... other configurations.

    # authentication header
    proxy_set_header    X-Auth-CouchDB-UserName 'someone';
    proxy_set_header    X-Auth-CouchDB-Roles    '_admin,staff';
    proxy_set_header    X-Auth-CouchDB-Token    'auth-token';
}

Couchdb将接受具有给定usernameroles的请求。X-Auth-CouchDB-Token应该是X-Auth-CouchDB-UserName的十六进制编码hmac,使用配置中couch_httpd_auth部分中的secret。除非proxy_use_secrettrue,否则不需要,默认情况下不是这样(尽管应该在生产中使用)。
在实践中,您需要创建一个代理服务器来验证username(可能需要密码)。只有当用户有效后,请求才会被传递到couchdb并附加这些头。

相关问题