2011-03-07 15 views
12

Estoy ejecutando Tomcat 6 para dar servicio a varias aplicaciones web, la mayoría de las cuales son públicas. Pero me gustaría restringir el acceso a solo una aplicación web, lo que permite conexiones solo desde localhost.Tomcat: Restrinja el acceso a localhost para/solo una/aplicación web

puedo restringir el acceso a todos los aplicaciones web utilizando una válvula en context.xml, como se describe en:

Pero no puedo encontrar la manera de restringir el acceso de una por aplicación. ¿Hay alguna manera de hacer esto con el web.xml de mi aplicación? O agregando reglas adicionales a context.xml?

Gracias,

-B


Recapping Solución:

$ 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

A Context es una "aplicación única". Cada GUERRA es su propio contexto. ¿Qué definición de aplicación estás usando? –

Respuesta

9

puede crear una context.xml individualizado de aplicación.

Este es un extracto de Tomcat doc en contexto configuraion: elementos de contexto pueden ser definidos de forma explícita:

  • En el archivo $CATALINA_HOME/conf/context.xml: el elemento de información de contexto se cargará por todas las aplicaciones web. En el archivo $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default: la información del elemento Contexto será cargada por todas las aplicaciones web de ese servidor.
  • En archivos individuales (con una extensión .xml) en el directorio $CATALINA_HOME/conf/[enginename]/[hostname]/. El nombre del archivo (menos la extensión .xml) se usará como ruta de contexto. Las rutas de contexto de niveles múltiples se pueden definir usando #, p. foo#bar.xml para una ruta de contexto de /foo/bar. La aplicación web predeterminada puede definirse utilizando un archivo llamado ROOT.xml.
  • Solo si no existe un archivo de contexto para la aplicación en el $CATALINA_HOME/conf/[enginename]/[hostname]/; en un archivo individual al /META-INF/context.xml dentro de los archivos de la aplicación. Si la aplicación web está empaquetada como WAR, entonces /META-INF/context.xml se copiará al $CATALINA_HOME/conf/[enginename]/[hostname]/ y se renombrará para que coincida con la ruta de contexto de la aplicación. Una vez que este archivo exista, no se reemplazará si se coloca un WAR nuevo con un /META-INF/context.xml más reciente en la base de datos del host.
1

Permitir localhost no funcionó para mí. Yo uso RemoteAddrValve en su lugar. Tenga en cuenta que algunos sistemas usan direcciones IPv4 (su filtro debe coincidir con el 127.0.0.1), mientras que otros usan direcciones IPv6 (coinciden con la dirección completa, no con anotaciones abreviadas como ::1).

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

El atributo allow toma una expresión regular, por lo que los puntos tienen que ser escapado. Como explained by Dmitry Negoda, esto va en /META-INF/context.xml.

0

Ir a la siguiente ruta de acceso: C: \ Archivos de programa \ Apache Software Foundation \ Tomcat 6.0 \ conf \ Catalina \ localhost \

En esta ruta se encuentra el archivo "manager.xml".

archivo Editar "manager.xml", con el siguiente contenido:

<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"/> 
    --> 

** * ** * guardar y servidores de funcionamiento. ...Lo tienes. NOTA: 127.0.0.1 SIGNIFICA SU SISTEMA IP 10.100.1.2 - ESTE ES SU AMIGO

Cuestiones relacionadas