es.mcu.yingo.filtros
Class FiltroUsuarioConCertificadoRequest

java.lang.Object
  extended by org.springframework.web.filter.GenericFilterBean
      extended by org.springframework.web.filter.OncePerRequestFilter
          extended by es.mcu.yingo.filtros.FiltroAbstracto
              extended by es.mcu.yingo.filtros.FiltroUsuarioConCertificadoRequest
All Implemented Interfaces:
javax.servlet.Filter, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.web.context.ServletContextAware

public class FiltroUsuarioConCertificadoRequest
extends FiltroAbstracto

Filtro que obtiene el usuario de la sesión. Si existe, comprueba que instancia de UsuarioConCertificado y lo sustituye en sesión por un objeto del tipo UsuarioConCertificadoRequestImp que contiene información de la petición http y del UsuarioConCertificado almacenado en la sesións.
Antes esto, si está definida la propiedad regex comprobará que la URL actual cumple la expresión regular. Si está no está definida siempre hará el cambio.

Author:
miguel.esteban

Field Summary
private  java.lang.String comprobarIpUsuario
          Si el parámetro comprobarIpUsuario es igual a '1', se comprueba que la ip del request y la ip de la sesión son la misma.
private  java.lang.String regex
          La expresión regular con la que se comprobará la url actual
 
Fields inherited from class es.mcu.yingo.filtros.FiltroAbstracto
FILTRO_URL_VISTAERROR, logger, VISTA_ERROR, vistaError
 
Fields inherited from class org.springframework.web.filter.OncePerRequestFilter
ALREADY_FILTERED_SUFFIX
 
Constructor Summary
FiltroUsuarioConCertificadoRequest()
           
 
Method Summary
private  void _doFilterInternal(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Método privado que recoge todas las excepiones.
private  boolean comprobarExpresionRegular(javax.servlet.http.HttpServletRequest request)
          Comprueba que la url actual cumpla con la expresión regular cargada en el atributo.
protected  void doFilterInternal(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.FilterChain chain)
           
 java.lang.String getComprobarIpUsuario()
           
 java.lang.String getRegex()
           
private  UsuarioConCertificado obtenerUsuarioConCertificado(javax.servlet.http.HttpServletRequest request)
          Obtiene el objeto UsuarioConCertificado de la sesión.
 void setComprobarIpUsuario(java.lang.String comprobarIpUsuario)
           
 void setRegex(java.lang.String regex)
           
private  void validarIp(javax.servlet.http.HttpServletRequest request, ConDatosDeRequest conDatosDeRequest)
          Si el parámetro comprobarIpUsuario es igual a '1', se comprueba que la ip del request y la ip de la sesión son la misma.
 
Methods inherited from class es.mcu.yingo.filtros.FiltroAbstracto
colocarParametroRequestVistaError, getVistaError, obtenerUrlActual, recogerError, setVistaError
 
Methods inherited from class org.springframework.web.filter.OncePerRequestFilter
doFilter, getAlreadyFilteredAttributeName, shouldNotFilter
 
Methods inherited from class org.springframework.web.filter.GenericFilterBean
addRequiredProperty, afterPropertiesSet, destroy, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setFilterConfig, setServletContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

regex

private java.lang.String regex
La expresión regular con la que se comprobará la url actual


comprobarIpUsuario

private java.lang.String comprobarIpUsuario
Si el parámetro comprobarIpUsuario es igual a '1', se comprueba que la ip del request y la ip de la sesión son la misma.

Constructor Detail

FiltroUsuarioConCertificadoRequest

public FiltroUsuarioConCertificadoRequest()
Method Detail

doFilterInternal

protected void doFilterInternal(javax.servlet.http.HttpServletRequest request,
                                javax.servlet.http.HttpServletResponse response,
                                javax.servlet.FilterChain chain)
                         throws javax.servlet.ServletException,
                                java.io.IOException
Specified by:
doFilterInternal in class org.springframework.web.filter.OncePerRequestFilter
Throws:
javax.servlet.ServletException
java.io.IOException

_doFilterInternal

private void _doFilterInternal(javax.servlet.http.HttpServletRequest request,
                               javax.servlet.http.HttpServletResponse response)
                        throws SeguridadYingoException,
                               java.net.UnknownHostException
Método privado que recoge todas las excepiones.
  1. Comprueba si la url actual cumple con la expresión regular del atributo regex(Si esta no está definida siempre se continua con el filtro).
  2. Obtiene el usuario de la sesión y comprueba que es instancia de UsuarioConCertificado. Si es nulo no se continua con el filtro
  3. Obtiene el usuario de la sesión y comprueba que es instancia de UsuarioConCertificado. Si es nulo no se continua con el filtro
  4. Comprueba si es instancia de ConDatosDeRequest. Si es así no se continua con el filtro porque ya están cargados los datos del request.
  5. Si no es instancia de ConDatosDeRequest crea un UsuarioConCertificadoRequestImp con los datos de UsuarioConCertificado y la petición http. Este nuevo usuario se almacenará en la sesión.

Parameters:
request -
response -
Throws:
java.net.UnknownHostException
SeguridadYingoException

validarIp

private void validarIp(javax.servlet.http.HttpServletRequest request,
                       ConDatosDeRequest conDatosDeRequest)
                throws SeguridadYingoException,
                       java.net.UnknownHostException
Si el parámetro comprobarIpUsuario es igual a '1', se comprueba que la ip del request y la ip de la sesión son la misma. Así es más complicado el robo de sesiones

Parameters:
request -
conDatosDeRequest -
Throws:
SeguridadYingoException
java.net.UnknownHostException

obtenerUsuarioConCertificado

private UsuarioConCertificado obtenerUsuarioConCertificado(javax.servlet.http.HttpServletRequest request)
Obtiene el objeto UsuarioConCertificado de la sesión.
Obtiene el Usuario de la sesión y comprueba que sea instancia de UsuarioConCertificado.
Si es devuelve el casting del usuario de la sesión. Si el usuario es nulo o no es intancia de UsuarioConCertificado se devolverá nulo.

Parameters:
request -
Returns:

comprobarExpresionRegular

private boolean comprobarExpresionRegular(javax.servlet.http.HttpServletRequest request)
Comprueba que la url actual cumpla con la expresión regular cargada en el atributo.
Devolverá correcto si la expresión regular no se ha definido o cuando la url actual cumpla con la expresión regular. En otro caso devolvera false.

Parameters:
request -
Returns:

getRegex

public java.lang.String getRegex()
Returns:
Devuelve el atributo regex

setRegex

public void setRegex(java.lang.String regex)
Parameters:
regex - Carga el atributo regex

getComprobarIpUsuario

public java.lang.String getComprobarIpUsuario()
Returns:
Devuelve el atributo comprobarIpUsuario

setComprobarIpUsuario

public void setComprobarIpUsuario(java.lang.String comprobarIpUsuario)
Parameters:
comprobarIpUsuario - Carga el atributo comprobarIpUsuario