Назад | Перейти на главную страницу

Проверка подлинности файлов cookie в Apache

Я пытаюсь настроить обратный прокси в 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]