https://github.com/rafaelmagalhaesguedes/authmicroservicejava
Microsserviço de Autenticação que utiliza JSON Web Tokens (JWT) e RabbitMQ para envio de emails. Ele foi desenvolvido usando Spring Boot e segue a arquitetura de microsserviços, dividindo a funcionalidade de autenticação e envio de emails em serviços independentes.
https://github.com/rafaelmagalhaesguedes/authmicroservicejava
h2-database java jwt rabbitmq spring-boot
Last synced: 3 months ago
JSON representation
Microsserviço de Autenticação que utiliza JSON Web Tokens (JWT) e RabbitMQ para envio de emails. Ele foi desenvolvido usando Spring Boot e segue a arquitetura de microsserviços, dividindo a funcionalidade de autenticação e envio de emails em serviços independentes.
- Host: GitHub
- URL: https://github.com/rafaelmagalhaesguedes/authmicroservicejava
- Owner: rafaelmagalhaesguedes
- Created: 2024-06-15T23:15:59.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-07-12T15:40:20.000Z (10 months ago)
- Last Synced: 2024-11-28T14:24:44.320Z (5 months ago)
- Topics: h2-database, java, jwt, rabbitmq, spring-boot
- Language: Java
- Homepage:
- Size: 629 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Microsserviço de Autenticação com JWT e RabbitMQ
## Visão Geral
Microsserviço de Autenticação que utiliza JSON Web Tokens (JWT) e RabbitMQ para envio de emails.
Ele foi desenvolvido usando Spring Boot e segue a arquitetura de microsserviços, dividindo
a funcionalidade de autenticação e envio de emails em serviços independentes.
Este sistema inclui as seguintes funcionalidades:- Registro de novos usuários
- Autenticação de usuários
- Geração e verificação de tokens JWT
- Envio de emails de boas-vindas utilizando RabbitMQ
- Integração com CloudAMQP para gerenciamento de mensagens RabbitMQ na nuvem
## Requisitos
- Java 17 ou superior
- Maven 3.8 ou superior
- Conta no CloudAMQP
## Configuração do Ambiente
1. Clone o Repositório
```
git clone https://github.com/seu-usuario/seu-repositorio.git
cd seu-repositorio
```
2. Configure o CloudAMQP
Certifique-se de que você tem uma conta no CloudAMQP e crie uma instância do RabbitMQ. Você pode se registrar e configurar sua instância no CloudAMQP.3. Configuração do Banco de Dados
Certifique-se de que você tem um banco de dados configurado e atualize as configurações de conexão no arquivo application.properties.4. Configure as Propriedades do Aplicativo
Edite o arquivo src/main/resources/application.properties com as configurações do seu ambiente.## Estrutura do Projeto
### Pacotes Principais
- controller: Contém os controladores REST que lidam com as requisições HTTP.
- dto: Contém as classes Data Transfer Objects (DTO) para transferência de dados.
- entity: Contém as entidades JPA que representam as tabelas do banco de dados.
- producers: Contém as classes responsáveis pelo envio de mensagens para o RabbitMQ.
- consumers: Contém as classes que consomem mensagens do RabbitMQ.
- security: Contém as configurações de segurança e classes relacionadas ao JWT.
## Arquitetura de Microserviços
### Microserviço de Autenticação
O microserviço de autenticação é responsável pelo registro e autenticação dos usuários,
bem como pela geração e verificação de tokens JWT. Ele expõe endpoints REST para essas
funcionalidades e publica eventos de cadastro de novos usuários na fila RabbitMQ.### Microserviço de Envio de Email
O microserviço de envio de email consome eventos da fila RabbitMQ e envia emails de boas-vindas
para os novos usuários. Ele escuta a fila configurada e utiliza as informações dos eventos para
compor e enviar os emails.## Como Executar
1. ***Certifique-se de que o RabbitMQ e o banco de dados estão em execução.***
2. Compile e execute o projeto:
```
mvn clean install
mvn spring-boot:run
```
3. O servidor estará disponível em http://localhost:8081.## Endpoints
### Autenticação
- POST /auth/login: Autenticação de um usuário e geração de token JWT.
### Usuário
- POST /persons: Registro de um novo usuário.
- GET /persons: Obter informações do usuário autenticado (requer token JWT).
## Prints do fluxo
### Registrar usuário

### Autenticação

### Email recebido na fila da cloud

### Payload do Email recebido

### Email enviado ao usuário
