我已经使用couchdb很长一段时间了,我们通过cookie auth进行身份验证。现在我们想开始测试代理身份验证,但我不太明白它是如何工作的。我已经激活了它,在“chttpd / authentication_handlers:“部分中包含了值“chttpd_auth,proxy_authentication_handler”,但是我如何指示令牌x是给用户y的?我不明白它是怎么运作的我希望有人能举个例子。谢谢。
jogvjijk1#
在proxy_authentication中,你是在其他地方进行身份验证的,这个其他地方是一个代理,或者更具体地说是一个反向代理。例如,如果您只使用一个用户,并使用nginx作为couchdb的代理,则在将请求传递到couchdb之前,您需要设置所需的头,如下所示:
proxy_authentication
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将接受具有给定username和roles的请求。X-Auth-CouchDB-Token应该是X-Auth-CouchDB-UserName的十六进制编码hmac,使用配置中couch_httpd_auth部分中的secret。除非proxy_use_secret是true,否则不需要,默认情况下不是这样(尽管应该在生产中使用)。在实践中,您需要创建一个代理服务器来验证username(可能需要密码)。只有当用户有效后,请求才会被传递到couchdb并附加这些头。
username
roles
X-Auth-CouchDB-Token
X-Auth-CouchDB-UserName
hmac
couch_httpd_auth
secret
proxy_use_secret
true
1条答案
按热度按时间jogvjijk1#
在
proxy_authentication
中,你是在其他地方进行身份验证的,这个其他地方是一个代理,或者更具体地说是一个反向代理。例如,如果您只使用一个用户,并使用nginx作为
couchdb
的代理,则在将请求传递到couchdb
之前,您需要设置所需的头,如下所示:Couchdb将接受具有给定
username
和roles
的请求。X-Auth-CouchDB-Token
应该是X-Auth-CouchDB-UserName
的十六进制编码hmac
,使用配置中couch_httpd_auth
部分中的secret
。除非proxy_use_secret
是true
,否则不需要,默认情况下不是这样(尽管应该在生产中使用)。在实践中,您需要创建一个代理服务器来验证
username
(可能需要密码)。只有当用户有效后,请求才会被传递到couchdb并附加这些头。