Я пытаюсь настроить обратный прокси в Apache. Пользователь должен будет войти в систему, а затем ему будет отправлен файл cookie. Я хочу, чтобы Apache проверил куки. Есть ли способ сделать это?
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/
токенид, и поместите его в файл 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
Чтобы время автоматически обновлялось, у меня есть /t
установлен без noatime
, и у меня он доступен в Интернете (но не проиндексирован) и часть ссылок на таблицы стилей /loggedin.txt
который переписывается как:
RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+)
RewriteRule ^/*loggedin\.txt$ /t/%1 [L]