Переслать REMOTE_USER коту через AJP (например, для шибболет)
Сегодня я застрял со следующей проблемой: 1. Я настроил Apache для базовой аутентификации (требуется действительный пользователь); который работал. 2. Я также настроил apache для пересылки запросов по некоторому пути (в моем случае /idp) в сервлет tomcat (shibboleth IDP).
В результате IdP shibboleth (профиль ECP) сказал мне, что не было никакого набора "REMOTE_USER" (он использует метод httpRequest.getRemoteUser(), чтобы проверить это; он возвратил ноль).
Я пробовал много вещей, таких как SetEnv и RewriteRule, но безуспешно.
Решение довольно простое, но найти его довольно сложно... поэтому я решил опубликовать его здесь, чтобы помочь другим решить этот вид проблемы.
С уважением Стефан
1 ответ
Хорошо, вот мое решение. Я обнаружил, что tomcat необходимо настроить для доверия / принятия аутентификации, которая была выполнена apache2...
Для этого вам нужно отредактировать server.xml в tomcat (должен быть в /etc/tomcat6/server.xml или подобном) и добавить tomcatAuthentication="false"
на ваш <Connector>
-Tag для подключения AJP. Тег My Connector теперь выглядит так:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
tomcatAuthentication="false" />
Теперь вам просто нужно перезапустить Tomcat... готово.
Надеюсь это поможет!;-)
Стефан
Объяснение:
"tomcatAuthentication" - "Если установлено значение true, аутентификация будет выполняться в Tomcat. В противном случае аутентифицированный принципал будет распространяться с собственного веб-сервера и использоваться для авторизации в Tomcat. Значение по умолчанию - true."
Цитируется по адресу: http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html