com.ejie.r01f.servlet.filter.authorization
Class R01FAuthServletFilter

java.lang.Object
  extended bycom.ejie.r01f.servlet.filter.authorization.R01FAuthServletFilter
All Implemented Interfaces:
javax.servlet.Filter

public class R01FAuthServletFilter
extends java.lang.Object
implements javax.servlet.Filter

Filtro de entrada para control de la seguridad basada en XLNets de forma declarativa. La configuración de seguridad se declara en el fichero [codApp].properties.xml incluyendo una seccion como la del siguiente ejemplo: com.ejie.r01f.xlnets.R01FXLNetsSecurityProvider [Expresion regular para machear la uri que se solicita] [Nombre en castellano] [Nombre en euskera] [Nombre en castellano] [Nombre en euskera] .... .... Notas: useSession: Indica si la información de autorizacion se almacena en memoria o bien hay que volver a obtenerla cada vez que se accede al recurso override: Indica si se ha de ignorar la configuracion de seguridad (no hay seguridad) provider: Configuración del provider de seguridad className: La clase que se encarga de consultar el almacén de seguridad Puede utilizarse XLNets o un povider que obtiene la seguridad de BD target: Un recurso que se protege id: Identificador del recurso kind: Tipo de protección allow -> Permitir el acceso restrict-> restringir el acceso uri: Una expresión regular con la url del recurso. resources: Elementos sobre los que hay que comprobar si el usuario tiene acceso NOTA: Si el tipo es allow, NO se comprueban los recursos resource Elemento individual sobre el que hay que comprobar si el usuario tiene acceso oid: El oid del objeto de seguridad En el caso de XLNets el oid puede corresponder al uid de una función o un tipo de objeto mandatory true/false: Indica si este item es OBLIGATORIO, lo cual implica que en caso de no tener acceso, se prohibirá el acceso al recurso. Si en todos los items mandatory es false, se permitirá el acceso aunque no haya autorización a los items, sin embargo, la información de seguridad se dejará en sesion. type: El tipo de elemento a comprobar En el caso de XLNets el tipo puede ser function: Una funcion object: Un tipo de objeto es/eu La descripcion en euskera y castellano del item de seguridad Se pueden definir múltiples recursos en una aplicacion, cada uno de ellos tendrá asociada una expresión regular con la URI. Cuando llega una petición, se aplicará la configuración de seguridad del primer recurso cuya uri machee la url solicitada al filtro. La secuencia de autorizacion es la siguiente: 1.- INSTANCIAR EL PROVIDER DE AUTORIZACION ESPECIFICADO EN LA CONFIGURACION 2.- COMPROBAR SI EL USUARIO ESTÁ AUTENTICADO Se llama al método getContext() para ver si el usuario está autenticado y si es así obtener el contexto de autenticación de usuario Aquí a su vez se pueden dar dos casos: 2.1 - EL USUARIO NO ESTA AUTENTICADO Si el usuario NO está autenticado se le dirige a la página de login llamando al metodo redirectToLogin() del provider de autorizacion 2.2 - EL USUARIO ESTA AUTENTICADO PERO NO HAY INFORMACION DE CONTEXTO DE AUTORIZACION EN LA SESION El usuario ha hecho login, pero es la primera vez que entra al recurso y no hay información de contexto de autorizacion en la sesion. El provider en la llamada a al funcion getContext() devuelve todos los datos del usuario y de la sesión de seguridad en la que esta autenticado Ahora ya se está como en el caso 2.3 (siguiente caso) 2.3 - EL USUARIO ESTÁ AUTENTICADO Y HAY INFORMACION DE CONTEXTO DE AUTORIZACION EN LA SESION Si en la sesión hay información de contexto, se busca en el contexto la informacion de autorizacion del destino solicitado. Pueden darse dos casos: 2.3.1 - En el contexto NO hay informacion de autorizacion del destino (es la primera vez que se accede) Se llama a la funcion authorize() del provider de seguridad que se encarga obtener la autorizacion correspondiente. A partir de este momento, esta información de autorización se mantiene en sesión y no es necesario volver a pedirla al provider de seguridad 2.3.2 - En el contexto HAY informacion de autorizacion del destino (ya se ha accedido al recurso) Directamente se devuelve la informacion de autorizacion almacenada en sesion REINICIALIZACION EN CALIENTE: Si se quiere re-inicializar los valores de configuracion de autorizacion basta con llamar a cualquier servlet securizado con el parametro: reload=true (esto no es demasiado seguro!!! quitarlo en prod)


Constructor Summary
R01FAuthServletFilter()
          Constructores
 
Method Summary
 void destroy()
           
 void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)
           
 javax.servlet.FilterConfig getFilterConfig()
          Devuelve la configuración del filtro
 void init(javax.servlet.FilterConfig config)
           
static void main(java.lang.String[] args)
          Mondongo para probar el temilla de la carga de la configuracion...
 void setFilterConfig(javax.servlet.FilterConfig filterConfig)
          Establece la configuración del filtro
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

R01FAuthServletFilter

public R01FAuthServletFilter()
Constructores

Method Detail

init

public void init(javax.servlet.FilterConfig config)
          throws javax.servlet.ServletException
Specified by:
init in interface javax.servlet.Filter
Throws:
javax.servlet.ServletException

doFilter

public void doFilter(javax.servlet.ServletRequest request,
                     javax.servlet.ServletResponse response,
                     javax.servlet.FilterChain chain)
              throws java.io.IOException,
                     javax.servlet.ServletException
Specified by:
doFilter in interface javax.servlet.Filter
Throws:
java.io.IOException
javax.servlet.ServletException

destroy

public void destroy()
Specified by:
destroy in interface javax.servlet.Filter

getFilterConfig

public javax.servlet.FilterConfig getFilterConfig()
Devuelve la configuración del filtro

Returns:
La configuracion del filtro

setFilterConfig

public void setFilterConfig(javax.servlet.FilterConfig filterConfig)
Establece la configuración del filtro


main

public static void main(java.lang.String[] args)
Mondongo para probar el temilla de la carga de la configuracion...

Parameters:
args - the command line arguments