Autenticação

Guia de Autenticação nas APIs Hiperstream

A Hiperstream oferece duas principais formas de autenticação para acesso às suas APIs: API Key e OAuth. Isso permite flexibilizar as opções de autenticação para atender às necessidades tecnológicas dos nossos clientes, garantindo um acesso seguro e simplificado às informações em nosso ambiente.

Autenticação via API Key

A autenticação via API Key utiliza um token único, que é imutável e pode ter um prazo de expiração. Este método é simples e direto, mas está sujeito a uma série de critérios e regras para sua utilização segura.

Uso recomendado da API Key:

  • ✅ Em sistemas backend, onde a API Key é armazenada em um cofre de senhas e a empresa parceira possui um IP ou range de IPs fixos e exclusivos.
  • ✅ Em APIs acessadas por usuários do cliente, com o token armazenado de forma segura no servidor do cliente.

Uso não recomendado da API Key:

  • 🚫 Em aplicações mobile, onde a API Key ficaria exposta no código do aplicativo.
  • 🚫 Em aplicações web, onde a chave ficaria visível no código JavaScript no lado do cliente.

Exemplo de requisição utilizando API Key:

curl -X GET 'https://sandbox-api.hiperstream.com/v1/ENDPOINT' \
 --header "Content-Type: application/json" \
 --header "x-apikey: xxx" \
 --header "companyId: yyy"

Autenticação OAuth

O acesso via OAuth segue o fluxo de autenticação de client credentials, onde o cliente recebe uma Client ID e uma Client Secret de nosso time de Infraestrutura e Segurança da Informação. Após a autenticação, é fornecido um access token para uso nas chamadas às nossas APIs.

Fluxo de autenticação OAuth

Há duas maneiras de enviar o client_id e o client_secret ao nosso endpoint de autenticação:

  1. Primeira forma: Unir client_id e client_secret com ":", converter a string resultante em base64 e enviar no cabeçalho da requisição.

    bashCopy code
    curl -X POST 'https://api-hcp.hiperstream.com/o/oauth/accesstoken' \
     --header "Content-Type: application/x-www-form-urlencoded" \
     --header "Authorization: Basic {chave_base64}"
    
  2. Segunda forma: Enviar client_id e client_secret no corpo da requisição.

    bashCopy code
    curl 'https://api-hcp.hiperstream.com/o/oauth/accesstoken' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'client_id=yyy' \
    --data-urlencode 'client_secret=xxx' \
    --data-urlencode 'grant_type=client_credentials'
    

Ambos os métodos requerem os parâmetros grant_type com valor client_credentials, content-type como 'application/x-www-form-urlencoded' no cabeçalho, e o método da requisição como POST.

Resposta do Token OAuth

A resposta para ambas as formas de requisição é um JSON contendo informações sobre a identidade dentro do ambiente da Hiper:

jsonCopy code
{
    "refresh_token_expires_in": 0,
    "api_product_list": "[sandbox-document-api]",
    "organization_name": "hiperstream",
    "developer.email": "[email protected]",
    "token_type": "Bearer",
    "issued_at": "1691198398055",
    "client_id": "yyy",
    "access_token": "xxx",
    "expires_in": 17999,
    "status": "approved"
}

Exemplo de chamada a um endpoint com o access token:

bashCopy code
curl -X GET 'https://sandbox-api.hiperstream.com/v1/ENDPOINT' \
 --header "Content-Type: application/json" \
 --header "Authorization: Bearer yyy" \
 --header "companyId: xxx"

Para mais informações e acesso às chaves de autenticação, entre em contato com o time de Professional Services da Hiperstream através do portal de atendimento.