Creando un Crud de usuarios
Vamos a dar otro paso, en esta ocasión, quiero presentaros un sistema terriblemente sencillo de proteger vuestras aplicaciones con Usuario y contraseña. (Claro, siempre que estéis trabajando con Java y Spring)
Nota: Hay una revisión de todo esto, con librerias en GitHub, y replicación en YouTube, por si os interesa… en https://recursosformacion.com/2024/09/empezando-con-spring-security/
Nuestro primer paso, será crear un pequeño microservicio para la gestión de usuario
El trabajo
Spring Security tiene muchas posibilidades y distintas formas de trabajar; hasta tiene sus propias tablas de usuarios y roles. Nosotros, en cambio queremos presentar paso a paso como podemos añadir seguridad a nuestra web, desde solo un usuario y contraseña para todo, hasta el mas sofisticado método.
Y, para poder presentarlo, lo primero que necesitamos es un pequeño microservicio, al que irle añadiendo niveles de seguridad
El proyecto
Para nuestro ejemplo, hemos pensado en una aplicación desarrollada con Spring Boot y que mantiene una tabla de usuarios muy sencilla, permitiendo dar altas, bajas, modificaciones y alguna consulta.
La version base de este desarrollo, lo tenéis en https://github.com/recursosformacion/SpringSecurity, seleccionando la rama «001-base«
Todo el ejercicio gira entorno a una tabla de usuarios
Con muy pocos campos, y una clave con autoincremento, en mi caso, sobre una Base de datos Oracle
No se han añadido demasiados filtros ya que quería dejar claro el tema principal, aunque, como mas adelante, esta tabla servirá para proporcionar los usuarios, he garantizado que el usUsername no se pueda repetir, ya que si lo hace, tira por suelo la idea (aunque solo fallaría para ese usuario….
La estructura en STS, que es lo que he utilizado para el desarrollo es la prevista por Maven
Hemos incorporado, para este inicio, los siguientes paquete:
- spring-boot-starter-web
- spring-boot-starter-data-jpa
- ojdbc8
- spring-boot-devtools
y hemos desarrollado con la version 17 de Java
La presentacion
En este paso, solo queremos dejar funcionando el CRUD, por lo que paso a describir los modulos hechos
Para el repositorio, hemos utilizado JpaRepository
Aunque hemos añadido dos métodos mas, para facilitarnos el trabajo, y cuya finalidad, creo que queda clara con los nombres asignados
Para el servicio, hemos escrito lo mínimo imprescindible, aunque hemos tenido que comprobar no se duplicara el Username, aunque se hubiera podido mejorar bastante…. de momento, tenemos esto
Como ya sabeis, para generar un error, es facil personalizar una clase, y eso hemos hecho
Y, por ultimo, solo quedaba escribir el Controller, que una vez mas, lo hemos reducido al mínimo, para centrarnos en seguridad, se trata de un RestController que atiende a la ruta «/api/usuario», y que hace las funciones básicas, mas alguna añadida para luego poder jugar con la seguridad
Creo que no tendréis demasiados problemas para seguir el código, solo recordad que tendréis que resolver el secret.properties siguiendo las instrucciones de secret.properties.example
Toda la información que indiquéis, se lleva a oracleDS.properties, y luego se importa desde application.properties
El microservicio esta completo, por lo que una vez definidos los datos de conexión para la BBDD, podéis utilizar Postman para crear un usuario, darlo de baja, modificarlo, visualizarlo….
En el siguiente articulo, le vamos a añadir protección por usuario y contraseña.
Notas al proyecto
Todo el proyecto lo tenéis disponible en GitHub (https://github.com/recursosformacion/SpringSecurity/tree/main/UsuariosCrud), estando cada parte en una rama distinta, para que podáis reproducir cualquier version del mismo.
Los articulo que componen este proyecto son
- Planteando Spring Security En donde se plantea y se escribe un pequeño microservicio encargado de realizar un CRUD de una tabla de usuarios que luego se va a utilizar para el resto de artículos (Rama 001-base).
- Spring Security – Protección simple en donde presentamos
- la autentificación automática con el usuario por defecto (Rama 005-Con_password_automatico)
- Autentificación con usuario y contraseña fijo (Rama 010-Con_usuario_y_contraseña)
- Autentificacion con varios usuarios y contraseñas, con roles distintos, guardados en memoria (Rama 015-VariosUsuarios)
- Spring Security – Utilizando la tabla de usuarios En donde preparamos el acceso a nuestra tabla de usuarios para permitir la autentificacion contra ella (Rama 020-Con_tabla_usuarios).
- Spring Security – Trabajando con tokens Utilizando un token, manteniendo el resto de parametros como hasta ahora
Relacionado
Descubre más desde Recursos para formacion
Suscríbete y recibe las últimas entradas en tu correo electrónico.