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

Apache как прокси для аутентификации

Мы пытаемся реализовать прокси аутентификации от Apache httpd. Это должно защитить приложение, которое использует базовую аутентификацию, но пользователь должен аутентифицироваться с аутентификацией httpd (в нашем случае mod_auth_cas).

Я могу добавить RequestHeader с правильным авторизованным значением, которое отправляет учетные данные в приложение, но оно статично, только с одним пользователем, который аутентифицируется.

Есть ли способ установить значение RequestHeader с помощью скрипта? Или какой-либо другой метод создания такого прокси-сервера аутентификации?

Я уже рассматриваю cgi-скрипт, который будет обрабатывать функцию прокси. Но мне это кажется дорогой в ад.

Это почти решение:

RewriteEngine on

# Create a RewriteMap to do base64 encoding:
RewriteMap base64map "prg:/usr/bin/base64"

# Put the base64-encoded user:password string into an environment variable:
RewriteRule .* - [E=AUTHN:${base64map:%{LA-U:REMOTE_USER}:%{LA-U:REMOTE_PASS}},NE]  

# Put the encoded user:password string into the Authorization header:
RequestHeader Authorization "Basic %{AUTHN}e"

(См. mod_rewrite документы для объяснения почему LA-U нужно.)

Но не хватает одного: пароля пользователя. В приведенном выше примере я использовал переменную среды REMOTE_PASS, как если бы она была установлена, но обычно такой переменной нет.

Вам нужно будет каким-то образом заставить mod_auth_cas поместить пароль пользователя в переменную среды, скажем, REMOTE_PASS, или получить его из заголовка запроса. Без пароля пользователя у вас недостаточно информации для установки заголовка авторизации.