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

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

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

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

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

1 ответ

Решение

Это почти решение проблемы:

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, или получить его из заголовка запроса. Без пароля пользователя у вас недостаточно информации для установки заголовка авторизации.

Другие вопросы по тегам