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:
- Decodificar o token para inspecionar seu conteúdo (reivindicações).
- 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.
