Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

Planteando Spring Security

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)

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

Deja un comentario

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 35.172.230.21
Proxy: 35.172.230.21
Remote host: ec2-35-172-230-21.compute-1.amazonaws.com
Remote port: 51066
** 35.172.230.21, 172.71.194.177