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

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

Недавно я развернул веб-приложение Java на Tomcat7 под управлением Apache2 на Ubuntu 14.04 VPS.

Я подключаю Apache2 и Tomcat7 с помощью mod_jk.

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

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

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

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

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

@ Tomcat server.xml:

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

@ worker.properties:

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

@ apache2 / доступные моды / 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: // сервер / bbn, Я получаю всплывающее окно аутентификации (это нормально), я ввожу имя пользователя / пароль, а затем:

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

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

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

Спасибо !!!

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

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

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

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

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

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