Breve ejemplo con Spring Security

Este es un sencillo ejemplo del uso del mecanismo de autorización y autenticación para aplicaciones de Spring, conocido como Spring Security, empleado aquí para autorizar el acceso de usuarios a una aplicación web.

En este caso, el planteamiento es el siguiente:

- Una aplicación web.

- Qué cada vez que se acceda a cualquier parte de la aplicación, se chequee si el usuario en cuestión esta autorizado para acceder.

- Un formulario de “login” para autenticarse por primera vez.

- Una página de bienvenida, para la primera vez que se autoriza.

En el ejemplo se usará:

- Un filtro web de Spring para redireccionar las peticiones al mecanismo de autorización de Spring.

- Un configuración de autorización básica via HTTP.

- Un formulario de “login”.

- Un “datasource” que de acceso a una base de datos, donde se encuentran registrados los usuarios y los grupos.

- Un gestor de autenticación de Spring que haga uso de este “datasource” y de unas queries SQL concretas para obtener los datos de autorización del usuario logado.

1. Añadimos las dependencias correspondientes a nuestro proyecto o descargamos los JARs asociados:

 

2. Creamos el modelo en base de datos que contiene la información de los usuarios y grupos que serán autorizados. Se necesitan dos tablas, una para los usuarios y otra para los roles o grupos. La tabla de usuarios (USERS) ha de tener al menos los siguientes campos:

USERNAME PASSWORD ENABLED
pepe perez 1

Y la tabla de roles (ROLES) puede ser:

ROLENAME USERNAME
ROLE_USER pepe

3. Habilitamos el filtro de Spring en el web.xml de nuestro proyecto web:

 

4. Creamos el fichero de configuración de Spring Security:

 

Si no tenemos “Datasource” declarado, y estamos usando Tomcat como servidor de aplicaciones, podemos incluir uno en el fichero “META-INF/context.xml” de nuestra aplicación. Una definición clásica de un “Datasource” usando este mecanismo sería:

 

5. Se incluye el fichero de configuración anterior en el contexto de la aplicación. Se importa en el “applicationContext.xml” de la aplicación. Si el fichero se llama “spring-security.xml” y se encuentra dentro del directorio “WEB-INF/spring”, estando el “applicationContext.xml” en “WEB-INF”, entonces sería:

 

6. La página de login, con el formulario de Spring Security, tendría este aspecto:

 

7. Finalmente, la página de bienvenida podría hacer uso de las etiquetas de Spring Security para mostrar el nombre del usuario logado. También se puede incluir aquí un enlace para hacer un “logout”:

 

Al lanzar la aplicación, se puede ver algo asi:

SpringSecurityLogin

Formulario “Login” de Spring Security

welcomePage

Página de bienvenida con el nombre del usuario logado y el enlace de “Logout”