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

Прокси-сервер Apache: передача REMOTE_USER на внутренний сервер

Мы используем shibboleth для аутентификации. Наш поставщик услуг shibboleth работает на хосте, на котором работает apache с конфигурацией обратного прокси (mod_proxy). Приложения, использующие shibboleth, работают в бэкэнде, на этих серверах не установлен SP. Мы получаем все заголовки shibboleth на внутренних серверах.

Теперь мне нужно, чтобы переменная REMOTE_USER, которая заполнялась аутентификацией shibboleth на прокси-сервере, была доступна на внутреннем сервере. Мне удалось получить значение в HTTP_REMOTE_USER и передать его на внутренние серверы, но я изо всех сил пытаюсь поместить это значение в REMOTE_USER на внутреннем сервере.

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

Вы можете отправить значение REMOTE_USER в строке запроса, отправленной на ваши внутренние серверы:

RewriteCond %{LA-U:REMOTE_USER} (.*)
RewriteRule ^/test.asp(.*) test.asp?userid=%{LA-U:REMOTE_USER} [QSA,P,L] 

LA-U означает взгляд вперед. Из mod_rewrite руководство:

% {LA-U: variable} может использоваться для упреждающего просмотра, который выполняет внутренний (основанный на URL) подзапрос для определения окончательного значения переменной. Это можно использовать для доступа к переменной для перезаписи, которая недоступна на текущем этапе, но будет установлена ​​на более позднем этапе.

Например, чтобы перезаписать в соответствии с переменной REMOTE_USER из контекста для каждого сервера (файл httpd.conf), вы должны использовать% {LA-U: REMOTE_USER} - эта переменная устанавливается на этапах авторизации, которые идут после преобразования URL фаза (во время которой работает mod_rewrite).

Я хотел сделать то же самое с shibboleth. Но, к сожалению, я нашел это на соответствующие документы apache. REMOTE_USER является частью стандарта CGI, поэтому не может быть изменен с помощью директив apache.

Невозможно переопределить или изменить стандартные переменные CGI с помощью директив управления средой.