I JSON Web Token (JWT) sono diventati uno standard fondamentale per l’autenticazione sicura e lo scambio di informazioni tra sistemi. Con i JWT è possibile trasmettere dati in modo sicuro, verificabile e standardizzato, riducendo la complessità e migliorando la sicurezza. In particolare, i JWT sono essenziali quando si lavora con OpenID Connect, dove consentono di convalidare e decodificare le informazioni restituite dal provider OpenID.
All’interno di 4D 21, 4D NetKit fornisce una semplice API per gestire questi token: decodifica, generazione e convalida.
Quando l’applicazione riceve un JWT?
Un JWT viene solitamente ricevuto durante i processi di autenticazione o autorizzazione. Alcuni esempi sono:
-
Dopo l’accesso di un utente tramite un provider OpenID Connect.
-
Quando un’API esterna restituisce un token per garantire l’accesso alle sue risorse.
-
Nella comunicazione tra servizi, quando un server emette un JWT per un altro servizio per verificare l’identità o le autorizzazioni.
In tutti questi scenari, l’applicazione deve decodificare e convalidare il token prima di utilizzarlo.
Decodifica e convalida di un JWT
Quando l’applicazione riceve un JWT, di solito sono necessarie due operazioni:
- Decodificare il token per ispezionare il suo contenuto (rivendicazioni).
- Convalidarlo per assicurarsi che non sia stato alterato e che provenga veramente da una fonte affidabile.
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)
Generazione di un JWT
Oltre alla decodifica e alla convalida, potrebbe essere necessario generare i propri JWT. Ad esempio, quando si costruisce un sistema che rilascia token ai client o quando si crea un token per l’autenticazione con un’API esterna.
// 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)
In questo modo si ottiene un token firmato pronto a proteggere gli scambi.
Conclusione
La classe NetKit. JWT fornisce a 4D 21 una semplice API per decodificare, validare e generare token. Aiuta gli sviluppatori a implementare flussi di autenticazione sicuri, a integrarsi con i provider OpenID e a creare applicazioni moderne e basate su standard.
Al momento non è possibile lasciare commenti su questo post.