4D NetKit: Descodificação, geração e validação de JWT

Tradução automática de Deepl

Os JSON Web Tokens (JWT) tornaram-se uma norma fundamental para a autenticação segura e a troca de informações entre sistemas. Com o JWT, é possível transmitir dados de forma segura, verificável e padronizada, reduzindo a complexidade e melhorando a segurança. Em particular, JWTs são essenciais quando se trabalha com OpenID Connect, onde eles permitem validar e decodificar a informação retornada pelo provedor OpenID.

Dentro do 4D 21, 4D NetKit oferece uma API simples para lidar com esses tokens: decodificação, geração e validação.

Quando sua aplicação recebe um JWT?

Um JWT é normalmente recebido durante processos de autenticação ou autorização. Os exemplos incluem:

  • Depois de um utilizador iniciar sessão através de um fornecedor OpenID Connect.

  • Quando uma API externa retorna um token para conceder acesso aos seus recursos.

  • Na comunicação entre serviços, quando um servidor emite um JWT para outro serviço para verificar a identidade ou as permissões.

Em todos esses cenários, seu aplicativo deve decodificar e validar o token antes de usá-lo.

Descodificação e validação de um JWT

Quando sua aplicação recebe um JWT, geralmente são necessárias duas etapas:

  1. Decodificar o token para inspecionar seu conteúdo (reivindicações).
  2. Validá-lo para garantir que ele não foi alterado e que realmente vem de uma fonte confiável.
var $JWT:=cs.NetKit.JWT.new()

// Decode the JWT token: this method extracts the token’s contents
// (such as header, payload, and signature) without necessarily verifying its validity
var $result := $JWT.decode($token)

// Validate the token: this step checks that the token is correctly signed with the provided key 
var $isValid:= $JWT.validate($token; $key)

Geração de um JWT

Além da descodificação e da validação, pode ser necessário gerar os seus próprios JWTs. Por exemplo, ao criar um sistema que emite tokens para clientes, ou ao criar um token para autenticar com uma API externa.

// Define the JWT claims object, starting with the header
var $claims:={header: {alg: "HS256"; typ: "JWT"}}
// Define the payload (the data carried by the token)
$claims.payload:={sub: "123456789"; name: "John"; exp : 50}

// Generate the JWT token using the claims and a private key
// The resulting token ($token) will be a signed string that can be sent securely
var $token := cs.NetKit.JWT.new().generate($claims; $privateKey)

Isso produz um token assinado pronto para proteger suas trocas.

Conclusão

A classe NetKit. JWT fornece 4D 21 com uma API simples para decodificar, validar e gerar tokens. Ela ajuda desenvolvedores a implementar fluxos de autenticação seguros, integrar com provedores OpenID, e criar aplicações modernas e baseadas em padrões.

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.