Filtros para Bloquear el Acceso a la Aplicación

En FundeWeb 2.0 y en FundeWeb 1.5 tenemos disponibles varios filtros para bloquear el acceso a la aplicación. Este bloqueo de acceso tiene dos tipos: informar de que la aplicación esta en mantenimiento o no tener autorizado el acceso a la aplicación.

Los filtros son los siguientes:

  1. RemoteAddressAccessControlFilter: Bloqueamos el acceso a la aplicación ciertas direcciones IP.
  2. RemoteHostAccessControlFilter: Bloqueamos el acceso a la aplicación ciertos nombres de host.
  3. TimeIntervalLockAccessControlFilter: Bloqueamos el acceso a la aplicación en un cierto intervalo de tiempo.

Como son filtros tiene por definición las propiedades:

  1. url-pattern: usado para indicar que solicitudes son filtradas, por defecto se filtran todas. url-pattern es un patrón al estilo de Tomcat que permite sufijos wildcard (*).
  2. regex-url-pattern: usado para indicar que solicitudes son filtradas, por defecto se filtran todas. regex-url-pattern es una expresión regular para indicar la ruta de solicitud filtrada.
  3. disabled: usado para indicar si el filtro esta deshabilitado.

Este filtro permite bloquear el acceso a la aplicación a determinadas direcciones IP que se especifican mediante una expresión regular. Para poder utilizar el filtro, tendremos que realizar los siguientes pasos:

1.- Hay que añadir el siguiente espacio de nombres en el elemento raíz <components> del fichero components.xml (donde están definidos el resto de espacio de nombres):

Para FundeWeb 1.2.x: xmlns:fdw-control=“http://www.umu.org/atica/seam/web/control
Para FundeWeb 2.0.x: xmlns:fdw-control=“http://www.um.es/atica/seam/web/control

2.- En la propiedad _xsi:schemaLocation_ añadimos lo siguiente:

Para FundeWeb 1.2.x: http://www.umu.org/atica/seam/web/control http://www.umu.org/atica/seam/web/control-1.5.0.xsd
Para FundeWeb 2.0.x: http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd

3.- Añadir la configuración del filtro:

Para tener una redirección a una página personalizada de FundeWeb.

<components
    ...
    xmlns:fdw-control="http://www.um.es/atica/seam/web/control"
    xsi:schemaLocation="
        ...
        http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd">
 
	<!-- Remote Address Control Filter -->
	<fdw-control:remote-address-access-control-filter
		allow="127\.0\.0\.1, 155\.54\.66\.120"
		deny="155\.54\.66\.121, 155\.54\.66\.122"
		disabled="false"
		access-lock="AUTHORIZATION"/>
   ...
</components>

O para devolver una respuesta directa sin redirección.

<components
    ...
    xmlns:fdw-control="http://www.um.es/atica/seam/web/control"
    xsi:schemaLocation="
        ...
        http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd">
 
	<!-- Remote Address Control Filter -->
	<fdw-control:remote-address-access-control-filter
		allow="127\.0\.0\.1, 155\.54\.66\.120"
		deny="155\.54\.66\.121, 155\.54\.66\.122"
		disabled="false"
		http-erro="400"
		http-erro-message="#{messages['mi.mensaje.error']}"/>
   ...
</components>

Las propiedades importantes son las siguientes:

  1. disabled: indica si el filtro esta desactivado (con valor true) o activado (con valor false). Por defecto el filtro esta desactivado.
  2. allow: lista separada por comas o espacios de expresiones regulares para indicar que direcciones IP pueden acceder a la aplicación. Puede dejarse vacia para dejar pasar todas las peticiones desde IPs no especificadas en la propiedad deny.
  3. deny: lista separada por comas o espacios de expresiones regulares para indicar que direcciones IP no pueden acceder a la aplicación.
  4. access-lock: tipo de bloqueo de acceso, que puede ser: MAINTENANCE o AUTHORIZATION. Por defecto es MAINTENANCE.
  5. access-lock-page: el viewId la página de bloqueo. Por defecto es: /fundeweb/accessLock.xhtml.
  6. http-error: código de estado HTTP que queremos devolver en una respuesta directa sin redirección.
  7. http-error-message: mensaje asociado al anterior código de estado.

Este filtro permite bloquear el acceso a la aplicación a determinados nombres de HOST que se especifican mediante una expresión regular. Para poder utilizar el filtro, tendremos que realizar los siguientes pasos:

1.- Hay que añadir el siguiente espacio de nombres en el elemento raíz <components> del fichero components.xml (donde están definidos el resto de espacio de nombres):

Para FundeWeb 1.2.x: xmlns:fdw-control=“http://www.umu.org/atica/seam/web/control
Para FundeWeb 2.0.x: xmlns:fdw-control=“http://www.um.es/atica/seam/web/control

2.- En la propiedad _xsi:schemaLocation_ añadimos lo siguiente:

Para FundeWeb 1.2.x: http://www.umu.org/atica/seam/web/control http://www.umu.org/atica/seam/web/control-1.5.0.xsd
Para FundeWeb 2.0.x: http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd

3.- Añadir la configuración del filtro:

Para tener una redirección a una página personalizada de FundeWeb.

<components
    ...
    xmlns:fdw-control="http://www.um.es/atica/seam/web/control"
    xsi:schemaLocation="
        ...
        http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd">
 
	<!-- Remote Host Control Filter -->
	<fdw-control:remote-host-access-control-filter
		allow=".*\.atica\.um\.es"
		deny=".*\.dominio.bloqueado\.com"
		disabled="false"
		access-lock="AUTHORIZATION"/>
   ...
</components>

O para devolver una respuesta directa sin redirección.

<components
    ...
    xmlns:fdw-control="http://www.um.es/atica/seam/web/control"
    xsi:schemaLocation="
        ...
        http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd">
 
	<!-- Remote Host Control Filter -->
	<fdw-control:remote-host-access-control-filter
		allow=".*\.atica\.um\.es"
		deny=".*\.dominio.bloqueado\.com"
		disabled="false"
		http-erro="400"
		http-erro-message="#{messages['mi.mensaje.error']}"/>
   ...
</components>

Las propiedades importantes son las siguientes:

  1. disabled: indica si el filtro esta desactivado (con valor true) o activado (con valor false). Por defecto el filtro esta desactivado.
  2. allow: lista separada por comas o espacios de expresiones regulares para indicar que nombres de HOST pueden acceder a la aplicación. Puede dejarse vacia para dejar pasar todas las peticiones desde HOSTs no especificados en la propiedad deny.
  3. deny: lista separada por comas o espacios de expresiones regulares para indicar que nombres de HOST no pueden acceder a la aplicación.
  4. access-lock: tipo de bloqueo de acceso, que puede ser: MAINTENANCE o AUTHORIZATION. Por defecto es MAINTENANCE.
  5. access-lock-page: el viewId la página de bloqueo. Por defecto es: /fundeweb/accessLock.xhtml.
  6. http-error: código de estado HTTP que queremos devolver en una respuesta directa sin redirección.
  7. http-error-message: mensaje asociado al anterior código de estado.

Este filtro permite bloquear el acceso a la aplicación durante un periodo de tiempo. Para poder utilizar el filtro, tendremos que realizar los siguientes pasos:

1.- Hay que añadir el siguiente espacio de nombres en el elemento raíz <components> del fichero components.xml (donde están definidos el resto de espacio de nombres):

Para FundeWeb 1.2.x: xmlns:fdw-control=“http://www.umu.org/atica/seam/web/control
Para FundeWeb 2.0.x: xmlns:fdw-control=“http://www.um.es/atica/seam/web/control

2.- En la propiedad _xsi:schemaLocation_ añadimos lo siguiente:

Para FundeWeb 1.2.x: http://www.umu.org/atica/seam/web/control http://www.umu.org/atica/seam/web/control-1.5.0.xsd
Para FundeWeb 2.0.x: http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd

3.- Añadir la configuración del filtro. Ejemplo de configuracion para bloqueo con rango de fechas-tiempo (DATETIME) mostrando la página de autorización (en lugar de la de mantenimiento, que es la página por defecto):

<components
    ...
    xmlns:fdw-control="http://www.um.es/atica/seam/web/control"
    xsi:schemaLocation="
        ...
        http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd">
 
	<!-- Remote Time Interval Lock Control Filter -->
	<fdw-control:time-interval-lock-access-control-filter
		start="17/10/2015 08:00:00"
		end="25/10/2015 08:00:00"
		disabled="false"
		access-lock="AUTHORIZATION"/>
   ...
</components>

Las propiedades importantes son las siguientes:

  1. disabled: indica si el filtro esta desactivado (con valor true) o activado (con valor false). Por defecto el filtro esta desactivado.
  2. start: instante de inicio del intervalo de bloqueo de acceso a la aplicación. Tiene que cumplir el patrón 'dd/MM/yyyy HH:mm:ss' si temporal-format tiene los valores DATETIME ó TIME_IN_DAYS, y el patrón 'HH:mm:ss' si temporal-format tiene el valor TIME.
  3. end: instante de fin del intervalo de bloqueo de acceso a la aplicación. Tiene que cumplir el patrón 'dd/MM/yyyy HH:mm:ss' si temporal-format tiene los valores DATETIME ó TIME_IN_DAYS, y el patrón 'HH:mm:ss' si temporal-format tiene el valor TIME.
  4. temporal-format: indica el comportamiento de bloqueo con respeto a la configuración temporal. Valores admitidos: DATETIME, TIME, TIME_IN_DAYS. El valor por defecto es DATETIME.
  5. access-lock: tipo de bloqueo de acceso, que puede ser: MAINTENANCE o AUTHORIZATION. Por defecto es MAINTENANCE.
  6. access-lock-page: el viewId la página de bloqueo. Por defecto es: /fundeweb/accessLock.xhtml.

Modos de Funcionamiento

El modo de funcionamiento se configura en la propiedad temporal-format: Admite tres modos de funcionamiento: DATETIME, TIME, y TIME_IN_DAYS.

DATETIME (o Rango de Fecha con Tiempo)

Es la opción por defecto. El patrón válido para las propiedades start y end es 'dd/MM/yyyy HH:mm:ss'.

En este modo de funcionamiento, se bloqueara toda petición (redirijiendose a la página de bloqueo configurada) cuya fecha de llegada al servidor este comprendida entre el rango de fechas con tiempo, especificado en las propiedades start y end.

Ejemplo:

<components
    ...
    xmlns:fdw-control="http://www.um.es/atica/seam/web/control"
    xsi:schemaLocation="
        ...
        http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd">
 
	<!-- Remote Time Interval Lock Control Filter -->
	<fdw-control:time-interval-lock-access-control-filter
		start="17/10/2015 08:00:00"
		end="25/10/2015 08:00:00"
		disabled="false"/>
   ...
</components>

En este ejemplo se bloquean las peticiones con fecha de llegada al servidor comprendidas entre las 08:00:00 horas del dia 17/10/2015 y las 08:00:00 horas del dia 25/10/2015. Redirijiendose a la página de mantenimiento.

TIME (o Rango de Tiempo)

El patrón válido para las propiedades start y end es 'HH:mm:ss'.

En este modo de funcionamiento, se bloqueara toda petición (redirijiendose a la página de bloqueo configurada) cuyo tiempo (hora:minuto:segundo) de fecha de llegada al servidor este comprendida entre el rango de tiempo, especificado en las propiedades start y end. Se aplica todos los días.

Ejemplo:

<components
    ...
    xmlns:fdw-control="http://www.um.es/atica/seam/web/control"
    xsi:schemaLocation="
        ...
        http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd">
 
	<!-- Remote Time Interval Lock Control Filter -->
	<fdw-control:time-interval-lock-access-control-filter
		start="00:00:00"
		end="06:00:00"
		temporal-format="time"
		disabled="false"/>
   ...
</components>

En este ejemplo se bloquean las peticiones con fecha de llegada al servidor comprendidas entre las 00:00:00 horas y las 06:00:00 horas, todos los días que este activo el filtro (disabled=“false”). Redirijiendose a la página de mantenimiento.

TIME_IN_DAYS (o Rango de Tiempo aplicado al rango de Fechas)

El patrón válido para las propiedades start y end es 'dd/MM/yyyy HH:mm:ss'.

En este modo de funcionamiento, se bloqueara toda petición (redirijiendose a la página de bloqueo configurada) cuyo tiempo (hora:minuto:segundo) de fecha de llegada al servidor este comprendida entre el rango de tiempo, especificado en las propiedades start y end. Se aplica solo al rango de fechas especificado en el patrón 'dd/MM/yyyy' especificado en las propiedades start y end.

Ejemplo:

<components
    ...
    xmlns:fdw-control="http://www.um.es/atica/seam/web/control"
    xsi:schemaLocation="
        ...
        http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd">
 
	<!-- Remote Time Interval Lock Control Filter -->
	<fdw-control:time-interval-lock-access-control-filter
		start="17/10/2015 00:00:00"
		end="25/10/2015 06:00:00"
		temporal-format="TIME_IN_DAYS"
		disabled="false"/>
   ...
</components>

En este ejemplo se bloquean las peticiones con fecha de llegada al servidor comprendidas entre las 00:00:00 horas y las 06:00:00 horas, los días comprendidos entre el 17/10/2015 y el 25/10/2015. Redirijiendose a la página de mantenimiento.

Los tipos de bloqueo de acceso a la aplicación son:

  1. MAINTENANCE: indica que la aplicación esta en proceso de modificación o mantenimiento. Es la opción por defecto.
  2. AUTHORIZATION: indica que no se tienen permisos de acceso a la aplicación.

Veamos la configuración de la página de bloqueo para el bloqueo de mantenimiento:

 Página de Bloqueo de Acceso por Mantenimiento

Veamos la configuración de la página de bloqueo para el bloqueo de autorización:

 Página de Bloqueo de Acceso por Autorización

Para poder testear las expresiones regulares, tenemos varias webs que lo permiten online:

Regular Expression Test Page for Java

Visual Regex Tester

Online Regex Tester

Java Regex Tester

  • fdw2.0/fundeweb2.0/gt/gt-filtros-bloqueo-acceso.txt
  • Última modificación: 05/02/2021 14:20
  • por JUAN MIGUEL BERNAL GONZALEZ