Ejercicios de Spring Security
Vamos a añadirle Spring Security a la aplicación de alquiler de coches que llevamos usando desde la sesión 5. No importa si no has completado todavía los ejercicios de las sesiones 5 y 6, son independientes de estos.
Seguridad de la capa web (1 punto)
Lo primero que debes hacer es la configuración básica de la seguridad en la capa web. Las dependencias de Spring Security ya están incluidas en el pom.xml, por tanto lo que te queda por hacer, como se comenta en los apuntes, es:
- Definir los filtros correspondientes en el web.xml para que Spring Security pueda interceptar las peticiones
- También en el web.xml, especificar dónde va a estar y cómo se va a llamar nuestro fichero de configuración de seguridad. Debes llamarlo security.xml y colocarlo en src/main/webapp/config, con el resto de ficheros de configuración de Spring.
- Crear el propio security.xml, puedes tomar como base el de los apuntes. Modifícalo para que haya dos roles, ROLE_USUARIO y ROLE_GESTOR. El primero será un usuario externo de la web, que únicamente podrá ver los coches. El segundo será un trabajador de la empresa, que además podrá hacer altas y modificaciones de coches. Ya implementaremos estos permisos, por el momento simplemente crea los dos roles. Crea además en el fichero algún usuario de prueba de cada tipo, poniéndole el login y password que desees.
Comprueba que la seguridad funciona. Al arrancar la aplicación, en lugar del listado de coches debería aparecer el formulario de login auto-generado por Spring Security. Comprueba que se puede entrar correctamente en la aplicación.
Personalización de la seguridad web (1 punto)
Una vez hecho esto, personaliza la seguridad web:
- Crea un formulario de login personalizado en la página login.jsp y configura Spring Security para que lo use. La default-target-url (a la que se saltará tras hacer login) debe ser "listar.do".
- Configura el "servicio" de logout y añádele al menos a la página de listar coches (WEB-INF/views/listar.jsp) un enlace para hacer "logout"
Una vez tengas todo esto funcionando, cambia la configuración de la seguridad para tomar los datos de los usuarios de la base de datos en lugar de tenerlos definidos en el security.xml
Seguridad en los JSP (0.5 puntos)
Añade algo de seguridad de "grano fino" a listar.jsp para que el enlace "editar" al lado de cada coche y el botón de "crear" solo aparezcan si el usuario actual tiene rol ROLE_GESTOR.
Seguridad de la capa de negocio (0.5 puntos)
Queremos reservar los coches que llevan pocos kilómetros solo para ciertos clientes VIP. Añadir un filtro al método listar() de la capa de negocio de modo que solo los gestores puedan ver los coches con menos de 1000 km.