Apache2 и Tomcat7 с BASIC аутентификацией (Ubuntu)

Я недавно развернул Java webapp на Tomcat7 перед Apache2 на Ubuntu 14.04 VPS.

Я соединяю Apache2 и Tomcat7 с помощью mod_jk.

Все статические ресурсы находятся на сервере Tomcat, но я хотел поставить перед ним Apache для лучшей практики, будущей масштабируемости и для возможного использования нескольких модов в будущем.

Все работает отлично, пока я не хочу реализовать всплывающее окно базовой аутентификации, которое будет использоваться в период тестирования - я хочу, чтобы только несколько друзей получили доступ к сайту и готов создать учетную запись для каждого человека.

Я планирую убрать базовую аутентификацию после завершения этапа тестирования. Проблема только во всплывающем окне аутентификации - если я удалю директивы аутентификации, сайт будет работать отлично.

Файл .war имеет имя bbn (и взрывается Tomcat), поэтому на данный момент меня устраивает простой доступ к приложению с помощью http://server/bbn - отлично.

Вот соответствующий конфиг :

@Tomcat's server.xml :

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

@workers.properties :

worker.list=worker
worker.worker.type=ajp13
worker.worker.host=localhost
worker.worker.port=8009

@apache2/mods-available/jk.conf :

JkWorkersFile /etc/apache2/workers.properties

@apache2/conf-enabled/security.conf :

<Directory />
   Options -ExecCGI -Includes -Indexes
   AllowOverride None
   Order Deny,Allow
   Deny from all
</Directory>

(это блокирует Apache, так как я хочу использовать его только для "проксирования")

@apache2/sites-enabled/000-default.conf :

JKMount /bbn* worker

(чтобы все запросы, начинающиеся с /bbn, шли к Tomcat)

С вышеуказанным конфигом все в порядке. Но мне нужно простое всплывающее окно аутентификации, поэтому я добавил в 000-default.conf :

<Location /bbn>
  AuthType Basic
  AuthName "bbn"
  AuthUserFile /var/bbn/bbnusers.config
  Require valid-user
  Order allow,deny
  Allow from all
</Location>

Я создал несколько пользователей с помощью команды htpasswd, которая создает хорошо сформированный файл и отлично добавляет в него пользователей.

Теперь начинаются проблемы: когда я хочу получить доступ к http://server/bbn, я получаю всплывающее окно авторизации (что нормально), я ввожу имя пользователя/пароль, затем:

  • Я вижу, что попал в .jsp webapp (я получаю правильный html обратно), отлично!

  • Однако для каждого ресурса, который должен быть загружен, такого как изображения, js и css, я получаю новое всплывающее окно авторизации (примечание: если я ввожу правильные учетные данные, я ничего не получаю).

Я провел несколько часов с другом, пробуя альтернативные конфигурации и пути, но это все - либо все получают доступ, либо никто... Что я не могу принять в данный момент.

Как я могу решить эту проблему?

Я не хочу использовать tomcat-users.xml и подобные механизмы, так как это должно быть обработано @ Apache и не требует никаких модификаций, связанных с java (web.xml по крайней мере...)

Спасибо !!!

=========== Edit : дополнительная информация:

  • В логах apache acces: /server/bbn При GET "GET /bbn HTTP/1.1" 401 (401 - это нормально, я полагаю, так как я получаю всплывающее окно авторизации) в логах apache.

Если я снова ввожу правильные учетные данные в следующем всплывающем окне, я вижу тот же запрос в логах (GET /bbn) также с 401, но я также вижу предоставленное имя пользователя перед меткой времени... Затем, если я нажимаю escape или отмену на всплывающем окне, открывается jsp-страница с ошибкой Tomcat, и всплывающее окно авторизации появляется для каждого ресурса (js, css, изображения). Ввожу ли я правильные учетные данные или нет, я не получаю ресурсы (я вижу html страницы, я уверен, что учетные данные верны...)

  • В журнале ошибок apache : Пока я ввожу правильные учетные данные, ничего не происходит, в противном случае возникают ошибки, связанные с учетными данными.

И последнее: если я пытаюсь получить, например. http://server/bbn/img/flags/EARTH.gif вместо http://server/bbn/ (домашняя страница) я получаю точно такое же обращение

Я полагаю, что apache auth не должен мешать классической Spring Security Authentication, которая обрабатывается в Tomcat в Java... Тем более, что значение коннектора по умолчанию "tomcatAuthentication='true'" - я ожидаю, что Apache2 будет работать как "стена одноразового доступа", прежде чем люди смогут протестировать сайт, возможно, я искажаю логику...

0
задан 27 July 2016 в 16:41
1 ответ

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

Таким образом, люди все еще могут регистрироваться / входить в систему и т. Д., Как только они попадают на настоящий сайт после заполнения формы «доступа». Это не идеально, но как временная мера во время тестов для личного проекта, который подойдет!

0
ответ дан 24 November 2019 в 06:07

Теги

Похожие вопросы