Este proyecto es una API REST que permite realizar operaciones CRUD sobre una base de datos de productos utilizando el Spring Security para la autenticación y autorización de usuarios.
Para poder ejecutar el proyecto es necesario tener instalado:
- Java 17
- IntelliJ IDEA
- MySQL
- Spring Web
- Spring Data JPA
- Spring Security
- MySQL Driver
- JJWT
- Model Mapper
- SpringDoc
- Spring Validation
- Lombok
- Bean: Es un objeto que es instanciado, ensamblado y administrado por un contenedor de inversión de control (IoC) como Spring. Estos beans son creados con el fin de encapsular muchas instancias de objetos en un solo objeto que pueda ser administrado por el contenedor de IoC.
- JWT: JSON Web Token es un estándar abierto basado en JSON para la creación de tokens de acceso que permiten la autenticar a un usuario y dar privilegios.
- El usuario envía sus credenciales al servidor (inicio de sesión)
- El servidor valida las credenciales (Spring Security)
- El servidor crea un JWT con los datos relevantes del usuario (ejm. roles) y lo envía al cliente (clase
JwtTokenProvider) - El cliente almacena el JWT y lo envía en cada petición al servidor.
- El usuario envía el JWT en la cabecera de la petición (header Authorization).
- El servidor valida que el JWT sea válido, autentica al usuario y autoriza la petición. (clase
JwtTokenProvider,TokenAuthenticationFilter) - El servidor responde con los datos solicitados.
- Se valida que el usuario tenga los permisos necesarios para acceder a los datos solicitados. (roles)
- El cliente muestra los datos.