Visão Geral da Autenticação
O processo de autenticação envolve os seguintes passos principais:- 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.
- Geração do Hash do Corpo da Requisição: Um hash MD5 do corpo da sua requisição (se houver) é gerado.
- 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.
- Envio da Requisição: O JWT assinado é enviado no cabeçalho
Authorizationda 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:| Campo | Descrição | Exemplo (do Documento) |
|---|---|---|
payload_md5 | Hash MD5 do corpo da requisição JSON. | md5(json.dumps(request_body).encode()).hexdigest() |
timestamp | Timestamp atual no formato UTC: %Y-%m-%dT%H:%M:%S.%fZ (ex: 2023-10-26T10:00:00.000Z). | datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ") |
method | Método HTTP da requisição (ex: “POST”, “GET”). | "POST" |
url | A URL do endpoint da API que está sendo chamada (sem o domínio base, apenas o caminho). Ex: /external. | "https://prodcution.api.noodle.cx/external/split" |
user_id | Seu ID de usuário fornecido. | "adc936da-1c92-11ef-8696-e2e1e3dec240" |
api_key | Sua chave de API fornecida. | "b860df30-8d03-34ed-0436-02081e3dec48" |
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
- JavaScript
- Java
- C#
- Go
- PHP
- Ruby
- Dart
4. Utilizando o Header de Autenticação
Após gerar oencoded_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
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çãoPOST para o endpoint /external, similar ao usado nos exemplos de geração de token. Você precisará substituir <SEU_TOKEN_JWT_GERADO> pelo token real.
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).