我有一个nginx的configuration,做ssl-pkiauthentication – 我很高兴能够authentication我的用户。
不过,我想进一步 – 我想要允许/拒绝访问基于SSLvariables的资源 – 特别是$ssl_client_s_dn (并validation$ssl_client_verify是“成功”)
基于此,我想根据用户列表select性地允许/拒绝URL组。 在这种情况下,Elasticsearch。 我有:
现在看起来我可以用http_auth_request来做到这一点 – redirect到一个'auth'url – 有点像这个博客中概述的
但是这对我来说似乎有点矫枉过正,为此我必须编写自己的“引擎”来接受/读取http,validation它是否等于正则expression式,并且吐出一个响应代码。
我正在试图做的“白名单”,例如对我来说:
allow if /(logstash|filebeat|topbeat)-mygroup-.*/;
(其中“mygroup”是从某个文件中读取的,理想情况下允许拥有多个组的成员资格)。
现在,最好用http_auth_request完成,并把它提供给一个真正的削减validation器的Web应用程序(脚本独立,或NGINX内的cgitypes的脚本)还是有更好的方法吗?
这个模块是一个额外的nginx,这意味着重新编译。 这不是一个灾难,但如果没有必要(我可以继续使用“股票”nginx),这将是可取的。
也许这样的事情会工作。 给定一个文件path,它将返回一个“Forbidden”响应,除非已经适当地设置了$ssl_client_verify 。
location ^~ /(logstash|filebeat|topbeat) { if ($ssl_client_verify != "SUCCESS") { return 403; } }