Utilizando curl para acessar API protegida

Aprenda como acessar uma API com a segurança ativada pelo Keycloak utilizando a ferramenta curl para obter um token de acesso.
  1. Crie uma instância do Keycloak seguindo os procimentos indicados.
  2. Execute o microsserviço payment.
  3. Certifique de ter cadastrado um usuário no Keycloak e otido as credenciais do Realm.
  4. Para obter o token de autenticação pelo curl é necessário realizar um post na API do Keycloak informando os parâmetros: username, password, client_id, client_secret.

a) Após obter os parâmetros

1
curl -X POST http://localhost:8080/realms/devprime/protocol/openid-connect/token -H 'Content-Type: application/x-www-form-urlencoded' -d username=$username -d password=$password -d grant_type=password -d client_id=$client -d client_secret=<secret> --insecure

b) Após executar deve obter o resultado conforme o exemplo abaixo.

1
{"access_token":"eyJhbGciOiJSUzI1NDdfOE1DdTVvSU5OR1pyN3BIeV9jIn0","expires_in":300,"refresh_expires_in":1800,"refresh_token":"eyn0.g3GJR-jdc0TpsL9E","token_type":"Bearer","not-before-policy":0,"session_state":"21d413e9-cffa-47227bec6","scope":"profile email"}

Nesse exemplo nós reduzimos o tamanho do result Access Token para facilitar a visualização. Exite algumas ferramentas que permitem visualizar o JSON Web Token caso deseje inspesionar o resultado do Keycloak.

c) Obtenha o valor do access token e monte a consulta para efetuar um GET na API protegida informando no Header o parâmetro “Authorization: Bearer”.

1
2
curl -X GET https://localhost:5003/v1/payment -H "Authorization: Bearer eyJhbGciOiJSUzI1NDdfOE1DdTVvSU5OR1pyN3BIeV9jIn0" -H 'accept: */*'
grant_type=password -d client_id=$client -d client_secret=<secret> --insecure

d) O mesmo exemplo pode ser repetido para efetuar um POST na API protegida.

1
curl -X 'POST' 'https://localhost:5003/v1/payment' -H "Accept:application/json"  -H "Content-Type:application/json" -H "Authorization: Bearer eyJhbGciOiJSUzI1NDdfOE1DdTVvSU5OR1pyN3BIeV9jIn0" -d '{\"customerName\": \"Ramon\", \"orderID\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\", \"value\": \"0\"}'
Última modificação September 2, 2023 (c87f0320)