Apache-2.2

Apache 中的 Cookie 身份驗證

  • April 6, 2011

我正在嘗試在 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]

引用自:https://serverfault.com/questions/62570