Tomcat Filter-Mapping не работает через ProxyPass - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь заблокировать доступ к разделу администрирования моего Tomcat WebApp с помощью фильтра в файле web.xml.

     <filter>
          <filter-name>Remote Address Filter</filter-name>
          <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
          <init-param>
            <param-name>allow</param-name>
            <param-value>**my ip address**</param-value>
        </init-param>        
    </filter>
    <filter-mapping>
        <filter-name>Remote Address Filter</filter-name>
        <url-pattern>/admin/*</url-pattern>
    </filter-mapping>

Он работает просто отлично, когда я прохожу через порт (то есть address.com:8081/webapp/admin), однако у меня есть ProxyPass, настроенный для доступа к веб-приложению через address.com/webapp/admin. Я не могу понять, как запустить фильтр при использовании ProxyPass.

Я делаю все это, чтобы иметь чистый URL-адрес без номера порта и затем доступ из белого списка к структуре URL-адреса администратора по соображениям безопасности. Мне также не нужно беспокоиться о доступе через порт, потому что порт будет отключен через брандмауэр. Поэтому мне просто нужно отфильтровать доступ через ProxyPass к очень определенной структуре URL (т.е. /webapp/admin/*).

1 Ответ

0 голосов
/ 06 ноября 2018

Таким образом, проблема была в том, что ProxyPass переключил IP-адрес на локальный хост. Поэтому вам необходимо добавить дополнительный код в файл web.xml, чтобы получить доступ к исходному IP-адресу.

<filter>
    <filter-name>RemoteIpFilter</filter-name>
    <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>RemoteIpFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>
...