https://github.com/gabrielcruzrodrigues/microservices-sistema-bancario
Sistema bancário utilizando a arquitetura de microsserviços, Java juntamente com o Spring Boot, sistema de mensageria com RabbitMQ, e comunicação Http via Openfeign
https://github.com/gabrielcruzrodrigues/microservices-sistema-bancario
eureka-server gateway h2-database java microsservicos openfeign rabbitmq springboot springcloud
Last synced: 3 months ago
JSON representation
Sistema bancário utilizando a arquitetura de microsserviços, Java juntamente com o Spring Boot, sistema de mensageria com RabbitMQ, e comunicação Http via Openfeign
- Host: GitHub
- URL: https://github.com/gabrielcruzrodrigues/microservices-sistema-bancario
- Owner: gabrielcruzrodrigues
- Created: 2023-11-30T12:37:00.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-12-11T19:00:37.000Z (over 1 year ago)
- Last Synced: 2025-01-17T10:22:51.542Z (5 months ago)
- Topics: eureka-server, gateway, h2-database, java, microsservicos, openfeign, rabbitmq, springboot, springcloud
- Language: Java
- Homepage:
- Size: 157 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# microservices-sistema-bancario
## sistema bancario utilizando a arquitetura de microsserviços
## keycloak - authentication
imagem docker do keyclock para authenticação via token jwt:
```docker run --name mskeyclock -p 8081:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:23.0.1 start-dev```### Configurando o keyclock:
1. inicie a imagem docker na sua maquina.
2. acesse o painel do keycloak ``` http://localhost:8081 ``` e utilize ```usuario: admin```, ```senha: admin```
3. crie um novo realm, pode dar a ele o nome que desejar, ele ira representar a aplicação que quer ser authenticada.
4. crie um novo client
* no campo client ID vc pode dar o nome que quiser
* no campo name, coloque um nome para identificar o cliente dentro do keycloak
5. na coluna ```settings``` procure pelo campo ```Capability config``` e abilite as seguintes configurações:
* Cliente authentication
* Authorization
* Standard flow
* Direct access grants
* Service accounts roles
6. na mesma coluna ```settings```, no campo ```capability config```, verifique se os sequintes campos estão desativados:
* Implicit flow
* OAuth 2.0 Device Authorization Grant
* OIDC CIBA Grant
7. na coluna settings, na área Access settings, encontre o campo ```Valid redirect URIs``` e adicione a url ```http://localhost:8080```, não esqueça de salvar as alterações.### configurando a api para se authenticar com o keycloak:
1. no painel do keycloak procure pelo campo ```Realm settings```, na coluna ```general``` clique em ```OpenID Endpoint Configuration```
2. das urls que vão aparecer, copie a url da chave ```"issuer"```: ```http://localhost:8081/realms/sistema-bank```
3. dentro do microserviço gateway, navegue ate o arquivo ```aplication.yml``` e adicione o conteudo do campo ```"issuer"``` no campo ```issuer-uri```, dentro da chave ```security```
## rabbitMQ - sistema de mensageria
imagem docker do rabbirMQ para sistema de mensageria:
```docker run -it --name msrabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management```
nome da queue para o avaliador de credito com rabbitMQ:
```emissao-cartoes```
## gerando imagem docker dos microserviços se preferir
Os microserviços contem um Dockerfile que permite gerar um container docker do microserviço, facilitando a criação de novas instancias e economizando processamento da maquina, pois vc não precisaria da IDE para rodar o codigo.
### criar imagem do microserviço
acesse o terminal na pasta raiz do microserviço e execute o seguinte codigo:
```docker build --tag NomeAleatórioDoContainer .```
### iniciar o container do microserviço
acesse o terminal na pasta raiz do microserviço e execute o seguinte codigo:
```docker run --name NomeAleatorioDoConteiner -p 8761:8761 NomeDaImagemCriada```
OBS: as portas devem variar para não gerar conflito.
## endpoints
### * GET - gerar token JWT para conseguir acessar as rotas
* para conseguir o token, vc precisa usar o Oauth2, se estiver no postman, vá até a coluna ```authorization```, selecione ```Oauth2```
, então vão aparecer alguns campos a serem preenchidos.
1. no campo ```Grant type```, altere para ```client credentials```
2. no painel do keycloak procure por ```Realm settings```, na coluna ```general``` clique em ```OpenID Endpoint Configuration```
3. das urls que vão aparecer, copie a url da chave ```"token_endpoint"```: ```http://localhost:8081/realms/sistema-bank/protocol/openid-connect/token``` e cole no campo ```Access Token URL``` no formulário de requisição do postman
4. no painel do keycloak procure por ```Clients```, selecione o cliente que você criou no momento de configurar o keycloak, copie o seu ```Client ID``` e cole no campo ```Client ID``` no formulário de requisição do postman
5. no painel do keycloak procure por ```Clients > Credentials```, copie a ```Client Secret``` e cole no campo ```Client Secret``` no formulário de requisição do postman
6. clique em ```get new access token```
### * Inserir token para liberar rotas
O token sera inserido no modelo Bearer token, se estiver utilizando o postman, pode seguir os seguintes passos:
1. procure pela coluna Authorization.
2. selecione o tipo(type) Bearer token.
3. insira o token gerado no passo acima no campo ```token```.
-----------------------------------------### Clientes endpoints
Cadastrar novo cliente:
```POST /clientes - response code: 201 - body request:```
```
{
"name": "gabriel",
"cpf": "16821773009",
"age": 21
}
```Buscar cliente por cpf:
```GET /clientes?cpf=00000000000 - response code: 200 - request params: cpf válido```-----------------------------------------
### Cartões endpoints
Cadastrar novo cartão:
```POST /cartoes - response code: 201 - body request```
```
{
"name": "Master Black",
"bandeira": "MASTERCARD", //MASTERCARD OU VISA
"renda": 2000, //renda necessária para o cliente ter o cartão
"limiteBasico": 3500
}
```Listar todos os cartões cadastrados:
```GET /cartoes/findAll - response code: 200```
Filtrar cartões por renda:
```GET /cartoes?renda=5000 - response code: 200 - request param: limite máximo buscado```
Listar cartões de um cliente pelo cpf:
```GET /cartoes?cpf=12345678910 - response code: 200 - request param: cpf de um cliente cadastrado```-----------------------------------------
### Avaliador Crédito endpoint
Analizar a situação do cliente:
```GET /avaliacoes-credito/situacao-cliente?cpf=01234567890 - response code: 200 - request param: cpf do cliente```
Avaliação de crédito do cliente:
```POST /avaliacoes-credito - request code: 201 - request body:```
```
{
"cpf": 12345678910,
"renda": 2000
}
```
Solicitar cartão para o cliente:
```POST /avaliacoes-credito/solicitacoes-cartao - response cody: 200 - request body:```
```
{
"idCartao": 1, //id de um cartão já registrado
"cpf": "16821773009",
"endereco": "algum endereco fictício",
"limiteLiberado": 2000
}
```
Retorna numero de protocolo