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:
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
- 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).