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

Как настроить Tomcat WebApp для приема учетных данных от Apache

Я пытаюсь получить веб-приложение, работающее в Tomcat 6, для авторизации пользователя, аутентифицированного Apache.

Я настроил Apache 2.4 для использования Active Directory для аутентификации пользователей (с использованием модуля от Centrify) и запросов ProxyPass / ProxyPassReverse к Tomcat.

Теперь я пытаюсь понять, как использовать эти учетные данные в приложении. Взяв в качестве примера приложение Tomcat 6 manager, как мне изменить его, чтобы распознать аутентифицированного пользователя и проверить подходящую роль?

Я предполагаю, что мне нужно изменить область в server.xml, возможно, на JNDIRealm или JAASRealm, однако в документации говорится о том, что область является «базой данных» или именами пользователей и паролями ». Это правильный путь?

Я также предполагаю, что мне нужно изменить логин-конфигурацию в web.xml, хотя я еще не знаю, какие значения использовать.

Если бы кто-то мог направить меня в правильном направлении или предложить другие возможности для изучения, я был бы признателен.

Кстати, я также пытаюсь аутентифицировать пользователя непосредственно в Tomcat, но меня попросили посмотреть на прокси-маршрут Apache для предпочтения.

Невозможно смешивать авторизацию на основе ролей Tomcat с аутентификацией, выполняемой в Apache.

Либо вы делаете все в tomcat (аутентификация и авторизация), либо, что гораздо более разумно, авторизуете этап в своем веб-приложении с учетом информации об учетной записи, которую вы найдете в переменных сервера (отправленных из apache в tomcat).

В последнем сценарии вы пропускаете всю часть безопасности tomcat и сосредотачиваетесь на:

  1. отправить переменные env из apache (setenv директивы для сбора, например, членства в группах);
  2. соберите их в своем веб-приложении.

Я предполагаю, что вы используете разъем AJP.

Достаточно установить tomcatAuthentication="false" в разделе AJP Connector, а затем пользовательский принципал из apache будет перенаправлен на tomcat6.

В соответствии с документация, пользователь будет без роли, что может вызвать некоторые проблемы в зависимости от приложения.

tomcatAuthentication: если установлено значение true, аутентификация будет выполняться в Tomcat. В противном случае аутентифицированный принципал будет передан с собственного веб-сервера и использован для авторизации в Tomcat. Обратите внимание, что этот участник не будет иметь связанных с ним ролей. Значение по умолчанию верно.