Apache-2.2
Apache 中的 Cookie 身份驗證
我正在嘗試在 Apache 中設置反向代理。使用者需要登錄,然後會收到一個 cookie。我希望 Apache 檢查 cookie。有沒有辦法做到這一點?
EG,現在我的配置如下所示:
<VirtualHost *:82> # username:password sent on to endpoint RequestHeader set Authorization "Basic cm9vdjfjDJaGRvYa==" ProxyPass /monitors/2/ http://192.168.1.6/foo.cgi ProxyPassReverse /monitors/2/ http://192.168.1.6/foo.cgi </VirtualHost>
我可以在 VirtualHost 中添加一些東西來限制基於 cookie 的訪問嗎?
當然。我做同樣的事情。
當使用者登錄時,我給他們一個 cookie 並在
/t/
tokenid中創建一個令牌,並將其放入一個 cookie:S=
tokenid;PATH=/
然後,我可以
RewriteCond
用來檢查文件是否存在:RewriteEngine on # check for no cookie being set RewriteCond %{HTTP:Cookie} !S=([a-zA-Z0-9]+) RewriteRule ^/*protected/ /login.html [L,R] # check for an invalid cookie being set RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+) RewriteCond /t/%1 !-f RewriteRule ^/*protected/ /login.html [L,R]
最後,垃圾收集器會定期執行並刪除舊令牌:
find /t -type f \! -atime +1 -delete
為了使 atime 自動更新,我
/t
安裝了沒有noatime
,並且我讓它可以通過網路訪問(但沒有被索引),並且部分樣式表引用/loggedin.txt
被重寫為:RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+) RewriteRule ^/*loggedin\.txt$ /t/%1 [L]