Skip to content

Arquitectura de microservicios con OpenFeign y protegiendo end-points con spring securityt jwt de una app de musica

Notifications You must be signed in to change notification settings

MateoRodriguez0/spring-security-jwt

Repository files navigation

Music application with microservices

Esta es una aplicación de muica con la arquitectura de microservicios con spring boot 3. En la que hay usuarios oyentes que disfrutan de la musica publicada en la aplicacion y tambien hay artistas que publican o crean la musica que se encuentra disponible en la app.

Basado en la arquitectura de microservicios sin ningun tipo de front-end o interfaz grafica, utiliza una seguridad basada en spring security con jwt para proteger los endpoints de los usuarios no autorizados.

Para que esta applicacion pueda funcionar completamente depende de dos microservicios, artistas y oyentes los cuales tienen toda la logica de negocio de la aplicacion. Este proyecto esta hecho con el fin de unir completamente ambos microservicios a traves de OpenFeign y crear una app segura con inicio de sesión y registro de cuenta.

Esta app permite:

  • ✅ Registrar usuarios
  • ✅ Auth JWT
  • ✅ Buscar todos los Artistas y por id
  • ✅ Buscar canciones por Artista
  • ✅ Listar todas las canciones y cancion por id
  • ✅ Crud completo de canciones
  • ✅ listar, agregar y eliminar favoritas
  • ✅ Validacion de campos

Spring Security architecture diagram

diagrama Spring Security

project architecture

appmusic

Technologies implemented

  • Spring Cloud OpenFeign
  • Jakarta Bean Validation
  • Spring Data JPA
  • Spring Security
  • Spring web
  • MySQL 8
  • Lombok
  • JJWT

Datasource and pool connection

spring.datasource.url=jdbc:mysql://localhost:3306/appmusic?useSSL=false&serverTimezone=America/Bogota&AllowpublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.generate-ddl=false
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.show-sql=false
spring.jpa.open-in-view=true

spring.datasource.hikari.pool-name=conexionOyentes
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.connection-timeout=45000

feignClients

@FeignClient(name = "servicio-artistas",url = "localhost:8004")
public interface ArtistsFeignClient {

    }


@FeignClient(name = "servicio-clientes",url = "localhost:8003")
public interface OyentsFeignClient {
	
    }

Requeriments

  • Java 17 o una version superior.
  • MySQL 8
  • Lombock

Instalation

  • Primero Descargamos la version mas actual del proyecto en el siguiente enlace
  • Descargamos el archivo appmusic.sql
  • Descargamos la versión mas reciente de la API ARTISTAS
  • Descargamos la versión mas reciente de la API OYENTES
  • importamos nuestros proyectos en el IDE.
  • luego importamos la base de datos en nuestro gestor SGBD MySQL.

por ultimo corremos nuestros proyectos y se veria asi:

Captura de pantalla 2023-10-19 115526

API Reference

Para Realizar una peticion se debe enviar el JWT en las cabeceras de la peticion.

Example:

Captura de pantalla 2023-10-14 082846

Usage/Examples

Sing In

  POST musicapp/auth/singin

Body

    {
        "username":"[email protected]",
        "password":"******"
    }

Si el inicio de session es exitoso deberi devolver en la respuesta el JSON Web Token.

Sing Up

  POST /musicapp/auth/singup

Body para Sing Up Oyente

    {
        "nombre":"oyente3",
        "email":"[email protected]",
        "password":"oyente3.12345",
        "idRol":1
    }

Body para Sing Up Artista

    {
        "nombre":"Artis3",
        "email":"[email protected]",
        "noombreArtistico":"Artistmusic"
        "password":"Artis3.12345",
        "idRol":2
    }

Tests in Postman

Captura de pantalla 2023-10-14 082628

Documentation

Authors

About

Arquitectura de microservicios con OpenFeign y protegiendo end-points con spring securityt jwt de una app de musica

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages