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.

O acesso via Api Key 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 seria 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"

O segundo tipo de acesso é segundo 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.