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

Ends in 05h 23m 49s

Spring Security – Utilizando la tabla de usuarios

Tras mostraros como trabajar con usuarios en memoria, en este articulo veremos como utilizar cualquier tablade usuarios para basar la seguridad en la misma. Seremos nosotros los que podremos decidir como van a funcionar todas las caracteristicas de Spring Security, al poder establecer tan dinamicamente como queramos el registro de usuarios

La idea

La primera `parte es una modificacion de nuestro trabajo anterior, pero esta vez, los usuario saldran de la tabla de usuarios que estamos manteniendo, por lo que lo primero que necesitamos es codificar las password, para que no se guarden planas en la base de datos. Con en el articulo anterior ya habiamos configurado un PasswordEncoding, ahora solo deberemos invocarlo cuando insertemos usuario nuevo, y esquivar la modificación de contraseña en la actualización, y eso lo podemos hacer en el controller, por lo que lo modificamos

Ya solo con esta modificacion, podriais empezar a crear usuarios, utilizando el usuario y contraseña del anterior ejercicio, y, los usuarios creados ahora, que se guardaran con la password encriptada, serviran para las posteriores pruebas.

Vamos a crear un usuario que estará basado en el que nosotros tenemos en la base de datos, pero que contendrá toda la información necesaria para Spring Security, implementando la interfaz UserDetails.

El constructor, solo necesita guardar la información, que la hemos dejado en los atributos previstos, aunque no haría falta, ya que la interfaz nos obligara a implementar los métodos correctos

Y ahora a implementar los métodos de la interfaz, que lo podemos hacer como mas nos convenga, en nuestro caso, hemos decidido que todos los usuarios tienen el rol de ADMIN y todas las cuentas no están expiradas, ni bloqueadas, así como los credenciales tampoco están expirados y los usuarios están activados

Si quisiéramos otra cosa, solo haría falta implementar el método contestando el valor que nos interesase en función del usuario.

Para cargar la información, implementaremos la interfaz que espera Spring Security que es UserDetailsService

Ahora, ya podemos borrar la clase que se encargaba de crear los usuarios en memoria (SecurityConfigurationInMemory) y pasar a añadir la configuración para el acceso a usuarios propios, y, para ello, nos bastara con añadir un bean a la clase SecurityConfiguration

Con esto, nos deberia funcionar todo, pero… no hemos configurado nadaa acerca de las rutas que queremos que requieran password y las que no, y ahora ya empieza a ser necesario tenerlo en cuenta

Para ello, y, con tal de tener ordenadaa la informacion, abriremos un nuevo modulo de configuración, al que llamaremos ConfiguracionFiltro

De momento, y, para simplificar la explicación, lo único que hacemos es deshabilitar el csrf en general, ya que da problemas con POST libre, y luego protegemos los accesos a «/api/loQueSea» con los verbosPUT y DELETE y dejamos libre todo lo demas

Con eso, ya podéis hacer tranquilamente inserciones de usuarios, y luego utilizarlos para identificaros y modificar o destruir.

Nota: Acordaros de activar la autorizacion para PUT y DELETE y desactivarla para GET y POST

Creamos un usuario

y vemos que nos vuelve con la contraseña encriptada, ahora lo podemos modificar, registrándonos con él

y antes de enviar, la actualizacion, que en este caso es corregir el nombre del usuario

Cuando enviemos, nos aparecerá la modificación hecha

Todo el codigo de este articulo, lo teneis en https://github.com/recursosformacion/SpringSecurity/tree/020-Con_tabla_usuarios/UsuariosCrud

Y hasta aquí, lo que considere interesante de Spring Security, en próximos artículos, veremos como utilizar servicios de terceros para registrarnos.

Tambien me gustaria comentaros que todo el codigo esta escrito utilizando la version actual (Junio-2023) por lo que espero que no tengáis ningún problema reproduciéndolo.

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

Descubre más desde Recursos para formacion

Suscríbete y recibe las últimas entradas en tu correo electrónico.

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: 18.97.14.83
Proxy: 18.97.14.83
Remote host: 18-97-14-83.crawl.commoncrawl.org
Remote port: 44132
** 18.97.14.83, 172.70.43.154