Apache 中的 Cookie 身份验证

Apache 中的 Cookie 身份验证

我正在尝试在 Apache 中设置反向代理。用户需要登录,然后会收到一个 cookie。我希望 Apache 检查该 cookie。有办法吗?

例如,现在我的配置如下所示:

<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 限制访问吗?

答案1

当然。我也这么做。

当用户登录时,我会给他们一个 cookie 并在其中创建一个令牌/t/令牌编号,并将其放入 cookie 中:S=令牌编号;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]

相关内容