2011-03-07 10 views
12

Używam Tomcat 6 do obsługi kilku aplikacji internetowych, z których większość jest dostępna publicznie. Ale chciałbym ograniczyć dostęp do tylko jednej aplikacji internetowej, umożliwiając połączenia tylko z localhost.Tomcat: Ogranicz dostęp do localhost dla/tylko jednej/aplikacji internetowej

mogę ograniczyć dostęp do wszystkich webapps stosując zawór w context.xml, jak opisano w:

Ale nie mogę dowiedzieć się, jak ograniczyć dostęp na na podstawie aplikacji. Czy jest jakiś sposób, aby to zrobić w web.xml mojej aplikacji? Lub dodając dodatkowe reguły do ​​pliku context.xml?

Dzięki,

-B


bieżnikowania Rozwiązanie:

$ cp /var/lib/tomcat6/conf/context.xml \ 
    /var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml 

$ cat /var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml 

<Context> 
    <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="localhost"/> 
... {as previously} ... 
</Context> 
+0

Kontekst JEST "pojedynczą aplikacją". Każda WAR to własny kontekst. Z jakiej definicji aplikacji korzystasz? –

Odpowiedz

9

można stworzyć indywidualny context.xml dla Ciebie aplikacja.

to fragment Tomcat dokumencie kontekstu configuraion: elementy kontekstu wyraźnie zdefiniowane:

  • w pliku $CATALINA_HOME/conf/context.xml: informacje elementem kontekście zostanie załadowany przez wszystkie webapps. W pliku $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default: informacje o elementach kontekstowych będą ładowane przez wszystkie aplikacje internetowe tego hosta.
  • W pojedynczych plikach (z rozszerzeniem .xml) w katalogu $CATALINA_HOME/conf/[enginename]/[hostname]/. Nazwa pliku (pomniejszona o rozszerzenie .xml) zostanie użyta jako ścieżka kontekstu. Ścieżki kontekstowe wielopoziomowe można zdefiniować za pomocą #, np. foo#bar.xml dla ścieżki kontekstowej /foo/bar. Domyślna aplikacja internetowa może być zdefiniowana przy użyciu pliku o nazwie ROOT.xml.
  • Tylko jeśli plik kontekstowy nie istnieje dla aplikacji w $CATALINA_HOME/conf/[enginename]/[hostname]/; w indywidualnym pliku pod numerem /META-INF/context.xml w plikach aplikacji. Jeśli aplikacja WWW jest spakowana jako WAR, wówczas /META-INF/context.xml zostanie skopiowany do $CATALINA_HOME/conf/[enginename]/[hostname]/ i zmieniony w celu dopasowania do ścieżki kontekstowej aplikacji. Po tym pliku nie zostanie on zastąpiony, jeśli nowa WAR z nowszym /META-INF/context.xml zostanie umieszczona w appBase hosta.
1

Pozwolenie localhost nie działa dla mnie. Używam zamiast tego RemoteAddrValve. Należy pamiętać, że niektóre systemy używają adresów IPv4 (Twój filtr musi pasować do dopasowania 127.0.0.1), podczas gdy inne używają adresów IPv6 (pasuje do pełnego adresu, a nie do skróconych oznaczeń, takich jak ::1).

<Context> 
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
      allow="0:0:0:0:0:0:0:1,127\.0\.0\.1" /> 
</Context> 

Atrybut allow zajmuje regexp, więc punkty muszą być uciekł. Jako explained by Dmitry Negoda, jest to /META-INF/context.xml.

0

Przejdź następującą ścieżkę: C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ conf \ Catalina \ localhost \

Pod tą ścieżką znajduje się plik "manager.xml".

Edit "manager.xml" plik z następującej treści:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" 
    allow="127.0.0.1,10.100.1.2"/> 

    <!-- Link to the user database we will get roles from 
    <ResourceLink name="users" global="UserDatabase" 
    type="org.apache.catalina.UserDatabase"/> 
    --> 

** * ** * zapisać i uruchomić serwer. ...Masz to. UWAGA: 127.0.0.1 WZMACNIA SWÓJ SYSTEM IP 10.100.1.2 - TO JEST PRZYJACIELA

Powiązane problemy