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
- inicie a imagem docker na sua maquina.
- acesse o painel do keycloak
http://localhost:8081
e utilizeusuario: admin
,senha: admin
- crie um novo realm, pode dar a ele o nome que desejar, ele ira representar a aplicação que quer ser authenticada.
- 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
- na coluna
settings
procure pelo campoCapability config
e abilite as seguintes configurações:- Cliente authentication
- Authorization
- Standard flow
- Direct access grants
- Service accounts roles
- na mesma coluna
settings
, no campocapability config
, verifique se os sequintes campos estão desativados:- Implicit flow
- OAuth 2.0 Device Authorization Grant
- OIDC CIBA Grant
- na coluna settings, na área Access settings, encontre o campo
Valid redirect URIs
e adicione a urlhttp://localhost:8080
, não esqueça de salvar as alterações.
- no painel do keycloak procure pelo campo
Realm settings
, na colunageneral
clique emOpenID Endpoint Configuration
- das urls que vão aparecer, copie a url da chave
"issuer"
:http://localhost:8081/realms/sistema-bank
- dentro do microserviço gateway, navegue ate o arquivo
aplication.yml
e adicione o conteudo do campo"issuer"
no campoissuer-uri
, dentro da chavesecurity
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
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.
acesse o terminal na pasta raiz do microserviço e execute o seguinte codigo:
docker build --tag NomeAleatórioDoContainer .
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.
- para conseguir o token, vc precisa usar o Oauth2, se estiver no postman, vá até a coluna
authorization
, selecioneOauth2
, então vão aparecer alguns campos a serem preenchidos.
- no campo
Grant type
, altere paraclient credentials
- no painel do keycloak procure por
Realm settings
, na colunageneral
clique emOpenID Endpoint Configuration
- 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 campoAccess Token URL
no formulário de requisição do postman - no painel do keycloak procure por
Clients
, selecione o cliente que você criou no momento de configurar o keycloak, copie o seuClient ID
e cole no campoClient ID
no formulário de requisição do postman - no painel do keycloak procure por
Clients > Credentials
, copie aClient Secret
e cole no campoClient Secret
no formulário de requisição do postman - clique em
get new access token
O token sera inserido no modelo Bearer token, se estiver utilizando o postman, pode seguir os seguintes passos:
- procure pela coluna Authorization.
- selecione o tipo(type) Bearer token.
- insira o token gerado no passo acima no campo
token
.
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
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
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