Trabajando con Spring Security + Struts 2

Que? de la nada saco frameworks para Java?

Pues si, resulta que ultimamente he estado aprendiendo mucho acerca de programacion de aplicaciones web usando Java con algunos frameworks como Spring, Struts y algunos otros.

Una de las cosas que necesito es implementar Spring Security a Struts 2 para una aplicacion web (haciendo uso de JSP para la presentacion). Cosa que hasta el momento habia sido un dolor de cabeza ya que resulta que llevo 5 dias leyendo tutoriales, guias y documentacion sin resultados satisfactorios hasta hace un momento que vi por fin la pantalla de login.

Pues bien, saltandonos explicaciones sobre que es cada cosa, daremos por hecho que sabes todo eso y has llegado aqui preguntandote como hacerlo, yo explicaré el como usando Netbeans (porque hacerlo por eclipse es un dolor de cabeza).

Lo primero es hacer nuestro proyecto web usando Struts 2 (no agregar spring todavia)

Inmediatamente vamos a agregar las librerias correspondientes a Spring Framework 3 (ya incluidas en Netbeans) , Spring Security , Struts 2 Spring Plugin y aopalliance.

Una vez agregado esto vamos a agregar a nuestro web.xml lo siguiente, justo antes del filtro de struts 2.

 

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/security.xml</param-value>
</context-param>

<!--Spring Security-->

<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Luego vamos a crear un archivo de configuracion de Spring (Nuevo Archivo > Spring > Spring Configuration File) y lo nombramos security.xml ,tomando en cuenta lo que esta en las etiquetas context-param de más arriba.

Nuestro archivo deberá contener más o menos esto:

<?xml version="1.0" encoding="UTF-8"?>

<!--
- Configuracion de Muestra
-
-->

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">

<beans:bean/>

<http auto-config='true'>

<intercept-url pattern="/**" access="ROLE_USER" />
<form-login default-target-url='http://google.com'
always-use-default-target='true' />
</http>

<authentication-manager>
<authentication-provider>
<user-service>
<user name="rafuru" password="test" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="bob" password="bobspassword" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>

</beans:beans>

Vemos los siguientes tags:

  • <http auto-config=”true”> : Nos facilita la vida para hacer funcionar el framework
  • <intercept-url pattern=”/**” access=”ROLE_USER” /> : Nos dice que todos los links de la aplicacion requieren acceso a un usuario con permisos de … usuario.
  • <form-login default-target-url=’/example/index.jsp’ always-use-default-target=’true’ />: Especifica la URL de redireccion al hacer login.

El ultimo bloque es el administrador de autenticacion, para razones de pruebas especificamos manualmente usuarios y contraseñas, aunque hay forma de hacer que funcione directamente con una base de datos (una forma que aun no investigo 😛 )

Una vez hecho esto si intentamos correr nuestra aplicacion nos mandara a la pantalla de login (dado que todas las url del sitio requieren permisos de usuario), si intentamos iniciar sesion con alguno de los usuarios antes especificados nos reenviara a google lo cual significa que está funcionando.

 

 

Nota: Tutorial hecho en 5 minutos, posiblemente lo mejore :3.

Anuncios

Cuentanos tu reaccion

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s