Переслать 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

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