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:
- RemoteAddressAccessControlFilter: Bloqueamos el acceso a la aplicación ciertas direcciones IP.
- RemoteHostAccessControlFilter: Bloqueamos el acceso a la aplicación ciertos nombres de host.
- TimeIntervalLockAccessControlFilter: Bloqueamos el acceso a la aplicación en un cierto intervalo de tiempo.
Como son filtros tiene por definición las propiedades:
- 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 (*).
- 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.
- disabled: usado para indicar si el filtro esta deshabilitado.
RemoteAddressAccessControlFilter
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:
- disabled: indica si el filtro esta desactivado (con valor true) o activado (con valor false). Por defecto el filtro esta desactivado.
- 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.
- deny: lista separada por comas o espacios de expresiones regulares para indicar que direcciones IP no pueden acceder a la aplicación.
- access-lock: tipo de bloqueo de acceso, que puede ser: MAINTENANCE o AUTHORIZATION. Por defecto es MAINTENANCE.
- access-lock-page: el viewId la página de bloqueo. Por defecto es: /fundeweb/accessLock.xhtml.
- http-error: código de estado HTTP que queremos devolver en una respuesta directa sin redirección.
- http-error-message: mensaje asociado al anterior código de estado.
RemoteHostAccessControlFilter
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:
- disabled: indica si el filtro esta desactivado (con valor true) o activado (con valor false). Por defecto el filtro esta desactivado.
- 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.
- deny: lista separada por comas o espacios de expresiones regulares para indicar que nombres de HOST no pueden acceder a la aplicación.
- access-lock: tipo de bloqueo de acceso, que puede ser: MAINTENANCE o AUTHORIZATION. Por defecto es MAINTENANCE.
- access-lock-page: el viewId la página de bloqueo. Por defecto es: /fundeweb/accessLock.xhtml.
- http-error: código de estado HTTP que queremos devolver en una respuesta directa sin redirección.
- http-error-message: mensaje asociado al anterior código de estado.
TimeIntervalLockAccessControlFilter
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:
- disabled: indica si el filtro esta desactivado (con valor true) o activado (con valor false). Por defecto el filtro esta desactivado.
- 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.
- 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.
- 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.
- access-lock: tipo de bloqueo de acceso, que puede ser: MAINTENANCE o AUTHORIZATION. Por defecto es MAINTENANCE.
- 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.
Tipos de Bloque de Acceso
Los tipos de bloqueo de acceso a la aplicación son:
- MAINTENANCE: indica que la aplicación esta en proceso de modificación o mantenimiento. Es la opción por defecto.
- 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:
Veamos la configuración de la página de bloqueo para el bloqueo de autorización:
Herramientas
Para poder testear las expresiones regulares, tenemos varias webs que lo permiten online:
Bibliografia
- fdw2.0/fundeweb2.0/gt/gt-filtros-bloqueo-acceso.txt
- Última modificación: 05/02/2021 14:20
- por JUAN MIGUEL BERNAL GONZALEZ