Skip to main content
Este guia descreve o processo de autenticação para interagir com a Noodle External API, que utiliza chaves assimétricas e JSON Web Tokens (JWT) com o algoritmo ES256 para segurança.

Visão Geral da Autenticação

O processo de autenticação envolve os seguintes passos principais:
  1. Geração de Chaves Assimétricas: Você precisará de um par de chaves pública e privada. A chave privada é usada para assinar suas requisições e deve ser mantida em segredo. A chave pública é usada pelo servidor para verificar a assinatura.
  2. Geração do Hash do Corpo da Requisição: Um hash MD5 do corpo da sua requisição (se houver) é gerado.
  3. Criação do JWT: Um JWT é criado contendo informações da requisição (método, URL, hash do corpo), timestamp, seu ID de usuário e chave de API. Este JWT é assinado com sua chave privada usando o algoritmo ES256.
  4. Envio da Requisição: O JWT assinado é enviado no cabeçalho Authorization da sua requisição HTTP.

1) Geração de Chaves Assimétricas (ES256 - secp256r1)

Use os seguintes comandos Unix (OpenSSL) para gerar suas chaves. Guarde sua chave privada (private_key.pem) em um ambiente seguro e nunca a compartilhe.

Gerar Chave Privada:

Gerar Chave Pública a partir da Chave Privada:

2. Geração do Token de Autenticação (JWT)

O token de autenticação é um JWT assinado com sua chave privada. Os seguintes campos são necessários no payload do JWT: O cabeçalho do JWT (JOSE header) deve ser:

3. Exemplos de Código para Gerar o Cabeçalho de Autenticação

Abaixo estão exemplos de como gerar o JWT e o cabeçalho de autorização em diferentes linguagens de programação. Você precisará adaptar o carregamento da chave privada e a estrutura exata da sua requisição.

Python

Este exemplo é baseado diretamente no documento fornecido.

4. Utilizando o Header de Autenticação

Após gerar o encoded_header_token (o JWT assinado) conforme demonstrado nos exemplos de código da seção anterior, você deve incluí-lo em suas requisições HTTP para a Noodle External API. O token JWT é enviado no cabeçalho (header) Authorization. Para requisições que enviam dados no corpo, como POST ou PUT com um payload JSON, você também deve incluir o cabeçalho Content-Type: application/json.

Formato do Cabeçalho

Substitua SEU_TOKEN_JWT_GERADO_AQUI pelo valor real do token que seu código gerou.

Exemplo de Requisição (cURL)

O exemplo a seguir demonstra como fazer uma requisição POST para o endpoint /external, similar ao usado nos exemplos de geração de token. Você precisará substituir <SEU_TOKEN_JWT_GERADO> pelo token real.
Ao executar este comando cURL (com o token correto), a API da Noodle tentará autenticar sua requisição usando o JWT fornecido e processará o corpo da requisição. Lembre-se que o payload_md5 dentro do seu JWT deve corresponder exatamente ao hash MD5 do corpo da requisição JSON que você está enviando ('{"Noodle": "Test"}' neste exemplo).

Suporte

Para troca de informações sobre a API, solicitação ou renovação de certificados, ou para esclarecer quaisquer dúvidas sobre o processo de autenticação e uso da Noodle External API, entre em contato conosco através do seguinte e-mail: api@noodle.cx