Перенаправить REMOTE_USER на tomcat через AJP (например, для shibboleth)

Сегодня я столкнулся со следующей проблемой: 1. Я настроил apache для базовой аутентификации (требуется действительный пользователь); который работал. 2. Далее я настроил apache для пересылки запросов по некоторому пути (/idp в моем случае) на сервлет tomcat (shibboleth IDP).

В результате shibboleth IdP (профиль ECP) ​​сказал мне, что нет набора «REMOTE_USER» (он использует метод httpRequest.getRemoteUser(), чтобы проверить это; он вернул null).

Я пробовал много вещей, таких как SetEnv и RewriteRule, но безуспешно.

Решение довольно простое, но найти его довольно сложно... поэтому я решил опубликовать его здесь, чтобы помочь другим решить такую ​​проблему.

С уважением Стефан


person SDwarfs    schedule 06.12.2012    source источник


Ответы (1)


Хорошо, вот мое решение. Я обнаружил, что tomcat необходимо настроить так, чтобы он доверял/принимал аутентификацию, выполненную apache2...

Для этого вам нужно отредактировать файл server.xml tomcat (должен находиться в /etc/tomcat6/server.xml или аналогичный) и добавить tomcatAuthentication="false" к вашему тегу <Connector> для соединения 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

person SDwarfs    schedule 06.12.2012