我已经使用 couchdb 很长时间了,我们通过 cookies auth 进行身份验证。现在我们想开始测试代理身份验证,但我不太明白它是如何工作的。
我已经激活了它,包括“chttpd / authentication_handlers:”部分中的值“chttpd_auth,proxy_authentication_handler”,但是我如何指示令牌 x 是给用户 y 的?
我无法理解它是如何工作的
我希望有人可以帮助我举个例子。谢谢你。
我已经使用 couchdb 很长时间了,我们通过 cookies auth 进行身份验证。现在我们想开始测试代理身份验证,但我不太明白它是如何工作的。
我已经激活了它,包括“chttpd / authentication_handlers:”部分中的值“chttpd_auth,proxy_authentication_handler”,但是我如何指示令牌 x 是给用户 y 的?
我无法理解它是如何工作的
我希望有人可以帮助我举个例子。谢谢你。
在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 将接受带有给定username
和的请求roles
。X-Auth-CouchDB-Token
应该是配置hmac
中X-Auth-CouchDB-UserName
使用secret
incouch_httpd_auth
部分的十六进制编码。proxy_use_secret
除非is ,否则它不是必需true
的,默认情况下不是这种情况(尽管它应该在生产中使用)。
在实践中,您将需要创建一个验证username
(可能使用密码)的代理服务器。只有在用户有效之后,请求才会被传递到 couchdb 并附加这些标头。