Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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

    java.lang.Object
      com.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

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD