A HiperStream trabalha com dois tipos de autenticação para acesso às suas APIs o Api Key e OAuth . Flexibilizamos as formas de autenticação para fornecer alternativas que ajudem a área de tecnologia do cliente a ter um acesso simplificado as suas informações no nosso ambiente seguro.
Apikey
O acesso via apikey se dá pelo uso de um único token (imutável e com a possibilidade de expiração) e é uma das formas mais simples de acesso, no entanto há uma gama de critérios e regras para a utilização desse meio. Abaixo alguns exemplos onde poderia ser usado e onde não poderiam ser usados esse tipo de autenticação.
- ✅ poderia ser usado por sistemas rodando em terminais backend, onde a Api Key estaria em um cofre de senhas, onde a empresa parceira tenha um IP ou range de IPs fixos e exlusivos
- ✅ poderia ser usado em uma API que um usuário do cliente consulta e cujo token está guardado em um cofre no servidor do cliente.
- 🚫 não poderia ser usado em uma aplicação mobile onde a Api Key está no código do aplicativo.
- 🚫não poderia ser usado em uma aplicação web onde a chave estaria no código javascript disponível na máquina do utilizador.
Abaixo está um modelo simples de requisição a um endpoint ficticio chamado ENDPOINT utilizando cURL e Api Key.
curl -X GET 'https://sandbox-api.hiperstream.com/v1/ENDPOINT' \
--header "Content-Type: applicaton/json" \
--header "x-apikey: Xa81cb1Z43e43e96aTa4861e7791dc7" \
--header "companyId: c0f7449f-c5f6-4b6f-925b-e052bc842080"
OAuth
O segundo tipo é usando o fluxo de autenticação OAuth de client credendials onde o cliente recebe uma Client ID e uma Client Secret do nosso time de Infraestrutura e Segurança da Informação, realiza uma chamada a um endpoint de autenticação e recebe uma resposta contendo um JSON com o access token que precisa usar para fazer as chamadas as nossas APIs, conforme fluxo da imagem abaixo.

Há duas formas de enviar o client_id e o client_secret para o nosso endpoint de autenticação. A primeira é transformando as duas chaves em uma separando-as com ':' , em seguida convertendo a string resultante para a base64 e enviando no cabeçalho da requisição. Já a segunda forma é fazendo uma requisição com os dois parâmetros sendo enviando dentro do corpo. Para as duas formas de envio dos parâmetros são obrigatórios os parâmetros: grant_type com o valor client_credentials no corpo da requisição, o content-type sendo 'application/x-www-form-urlencoded' no cabeçalho e o METHOD da requisição como POST .
//Passo a passo da conversão
//client_id=Xa81cb1Z43e43e96aTa4861e7791dc7 e client_secret=TnHt2Z43e43e96aTa4861e7791Pq43
//chave_unida=Xa81cb1Z43e43e96aTa4861e7791dc7:TnHt2Z43e43e96aTa4861e7791Pq43
//chave_base64=WGE4MWNiMVo0M2U0M2U5NmFUYTQ4NjFlNzc5MWRjNzpUbkh0Mlo0M2U0M2U5NmFUYTQ4NjFlNzc5MVBxNDM=
curl -X POST 'https://api-hcp.hiperstream.com/o/oauth/accesstoken' \
--header "Content-Type: application/x-www-form-urlencoded" \
--header "Authorization: Basic WGE4MWNiMVo0M2U0M2U5NmFUYTQ4NjFlNzc5MWRjNzpUbkh0Mlo0M2U0M2U5NmFUYTQ4NjFlNzc5MVBxNDM=" \
curl 'https://api-hcp.hiperstream.com/o/oauth/accesstoken' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=Xa81cb1Z43e43e96aTa4861e7791dc7' \
--data-urlencode 'client_secret=TnHt2Z43e43e96aTa4861e7791Pq43' \
--data-urlencode 'grant_type=client_credentials'
O retorno para ambas as forma de requisição é um JSON contento informações sobre a identidade dentro do ambiente da HiperStream, conforme o modelo abaixo.
{
"refresh_token_expires_in": 0,
"api_product_list": "[sandbox-document-api]",
"api_product_list_json": [
"sandbox-document-api"
],
"organization_name": "hiperstream",
"developer.email": "[email protected]",
"token_type": "Bearer",
"issued_at": "1691198398055",
"client_id": "Xa81cb1Z43e43e96aTa4861e7791dc7",
"access_token": "zeuJNcZ6Q5IxP3jJvZ1tUBVGpJyv",
"application_name": "76d0912b-aec4-48cd-8f89-9cd8e750363e",
"scope": "",
"expires_in": 17999,
"refresh_count": "0",
"status": "approved"
}
Exemplo de uma chamada a um dos nossos endpoints usando o access token.
curl -X GET 'https://sandbox-api.hiperstream.com/v1/ENDPOINT' \
--header "Content-Type: applicaton/json" \
--header "Authorization: Bearer Xa81cb1Z43e43e96aTa4861e7791dc7" \
--header "companyId: c0f7449f-c5f6-4b6f-925b-e052bc842080"
Essas informações são disponibilizadas pela :hiperstream, para mais informações entrar em contato.
Para ter acesso as chaves de acesso de acesso entre em contato com o time de Professional Services e peça a que melhor convir para o seu projeto.