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