Translate

jueves, 30 de agosto de 2012

SpringSecurity: Truco para securizar URLS de tu aplicación

El parámetro "<sec:http pattern=" de Spring Security sirve para mapear las URL que atacan a nuestra aplicación y poderles aplicar seguridad a cada uno de ellos.

La experiencia aculada en nuestros proyectos nos ha llevado a la conclusión de que para configurar correctamente la seguridad de la aplicación y no tener problemas con las URL lo mejor es agrupar los patrones.

Nuestro sistema de seguridad consistía en que nosotros hacemos login contra un CAS server y una vez obtenida la autenticación este debía de redirigirnos a la aplicación a la que tenemos acceso. El problema era que aleatoriamente nos daba el acceso o no, generalmente nada más hacer log-in no nos daba acceso pero si recargábamos la página si nos daba acceso.

Nuestra configuración, erronea e incial era la siguiente:

 <sec:http pattern="/messagebroker/**" security="none"/>
 <sec:http pattern="*.swf" security="none"/>
 <sec:http pattern="*.html" security="none"/>  
 
 
 
 <sec:http entry-point-ref="entryPoint" auto-config="false" pattern="/*">
  <sec:intercept-url pattern="/**" access="ROLE_AUTHENTICATED"/>
 </sec:http>




La solución a este problema fue juntar los patrones e incluso segregarlos un poco más y diferenciar la distintas URLs

 <sec:http pattern="*.swf" security="none"/>
 <sec:http pattern="*.html" security="none"/>  
 
 <sec:http pattern="/**">
  <sec:anonymous enabled="true"/>
  <sec:intercept-url pattern="/messagebroker/**" access="ROLE_ANONYMOUS"/>
  <sec:intercept-url pattern="/access/login" access="ROLE_ANONYMOUS"/>
  <sec:intercept-url pattern="/access/loginsuccess" access="ROLE_AUTHENTICATED"/>
  <sec:form-login login-page="/access/login"/>  
 </sec:http>




No hay comentarios:

Publicar un comentario