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

Базовая аутентификация Apache с Tomcat

У меня следующая настройка сервера:

Теперь я хочу ограничить доступ ко всей системе (т.е. http: // <IP-адрес сервера> /*) путем настройки базовой аутентификации.

Так выглядит единственная включенная конфигурация сайта apache:

<VirtualHost *:80>
        <Proxy *>
            Require all granted
        </Proxy>

        ProxyRequests           Off
        ProxyPreserveHost       On

        ProxyPass                /tickets       http://localhost:8081/tickets
        ProxyPassReverse         /tickets       http://localhost:8081/tickets

        <Location />
                AllowOverride AuthConfig
                AuthType Basic
                AuthName "Restricted Content"
                AuthUserFile /etc/apache2/.htpasswd
                Require user myuser
        </Location>
</VirtualHost>

Но с этой конфигурацией я сталкиваюсь с проблемой при попытке войти в систему. После ввода данных для входа в систему появляется окно входа с запросом еще раз для входа. После трех попыток tomcat возвращает ошибку 401! приложение, а не apache.

Для этого запроса нет записи ни в apache access.log, ни в error.log. Хотя apache будет регистрировать запросы с неправильными учетными данными.

Как я могу настроить Apache для проксирования всех /tickets/* запросы к Tomcat, заставляя клиента аутентифицироваться при доступе /*?

У меня возникло подозрение, что я получил ошибку 401 из приложения tomcat. похоже, что apache отправил запрос на авторизацию, хотя этого не должно было быть. Мне пришлось удалить "Authorization" параметр из заголовка запроса.

Сделать это. Я включил mod_headers и добавил RequestHeader unset "Authorization" непосредственно перед директивами ProxyPass.

Итак, моя конфигурация теперь выглядит следующим образом:

<VirtualHost *:80>

        ProxyRequests           Off
        ProxyPreserveHost       On

        RequestHeader unset "Authorization"       

        <Location "/tickets/rest/">
                  Satisfy Any
                  Order allow,deny
                  Allow from all
        </Location>

        <Location />
                AuthType Basic
                AuthName "Restricted Content"
                AuthUserFile /etc/apache2/.htpasswd
                Require user myuser
        </Location>

        ProxyPass                /tickets       http://localhost:8081/tickets
        ProxyPassReverse         /tickets       http://localhost:8081/tickets

</VirtualHost>

РЕДАКТИРОВАТЬ:

Jira использует собственный REST-API для гаджетов, поэтому мне пришлось определить Location-Tag для /tickets/rest дорожка.

  • удален прокси-тег
  • добавлен Location-Tag для jira-rest API

Есть идеи по решению проблемы от:

Вам нужно заменить Require user myuser по Require valid-user

и удалить

    <Proxy *>
        Require all granted
    </Proxy>