Welcome to Our Website

JSON Web Token (JWT) explained (Italiano)

JSON Web Token è uno standard utilizzato per creare token di accesso per un’applicazione.

Funziona in questo modo: il server genera un token che certifica l’identità dell’utente e lo invia al client.

Il client invierà il token al server per ogni richiesta successiva, in modo che il server sappia che la richiesta proviene da una particolare identità.

Questa architettura si dimostra molto efficace nelle moderne app Web, dove dopo l’autenticazione dell’utente eseguiamo richieste API a un REST o a un’API GraphQL.

Chi usa JWT?, Google, per esempio. Se si utilizzano le API di Google, si utilizzerà JWT.

Un JWT è firmato crittograficamente (ma non crittografato, quindi l’uso di HTTPS è obbligatorio quando si memorizzano i dati dell’utente nel JWT), quindi c’è una garanzia che possiamo fidarci di esso quando lo riceviamo, poiché nessun intermediario può intercettarlo e modificarlo, o i dati che contiene, senza invalidarlo.

Detto questo, i JWT sono spesso criticati per il loro uso eccessivo, e specialmente per il loro utilizzo quando possono essere utilizzate soluzioni meno problematiche.

Devi formare la tua opinione sull’argomento., Non sto sostenendo una tecnologia rispetto a un’altra, solo presentando tutte le opportunità e gli strumenti che hai a tua disposizione.

A cosa servono? Principalmente autenticazione API e autorizzazione da server a server.

Come viene generato un token JWT?

Usando il nodo.,js è possibile generare la prima parte del token utilizzando questo codice:

const header = { "alg": "HS256", "typ": "JWT" }const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64')

impostare l’algoritmo di firma per essere HMAC SHA256 (JWT supporta diversi algoritmi), quindi per creare un buffer da questo JSON codificato in oggetto, e noi codificare utilizzando base64.

Il risultato parziale è eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

Successivamente aggiungiamo il payload, che possiamo personalizzare con qualsiasi tipo di dati., Ci sono chiavi riservate, tra cui isseexp che identificano l’emittente e il tempo di scadenza del token.

È possibile aggiungere i vostri propri dati per il token utilizzando un oggetto:

const payload = { username: 'Flavio' }

convertire questo oggetto, JSON-codificati, per un Buffer e si codifica il risultato con base64, proprio come abbiamo fatto prima:

const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64')

In questo caso, il risultato parziale è di eyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

Successivamente, otteniamo una firma dall’intestazione e dal contenuto del payload, che assicura che il nostro contenuto non possa essere modificato anche se intercettato poiché la nostra firma verrà invalidata. Per fare ciò, useremo il modulo nodo crypto:

Usiamo la chiave segreta secretKey e creiamo una rappresentazione codificata base64 della firma crittografata.,

Il valore della firma nel nostro caso è

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

Ci sono quasi fatto, abbiamo solo bisogno di concatenare le 3 parti di intestazione, capacità di carico e di firma, separandoli con un punto:

const jwt = `${encodedHeader}.${encodedPayload}.${signature}`

autenticazione API

Questo è probabilmente l’unico modo sensato di usare JWT.

Uno scenario comune è: ti iscrivi a un servizio e scarichi un JWT dal dashboard del servizio. Questo è ciò che userai d’ora in poi per autenticare tutte le tue richieste al server.,

Un altro caso d’uso, che è l’opposto, sta inviando il JWT quando gestisci l’API e i client ti connettono e vuoi che i tuoi utenti inviino richieste successive semplicemente passando il token.

In questo caso, il client deve memorizzare il token da qualche parte. Dov’è il posto migliore? In un cookie HttpOnly. Gli altri metodi sono tutti soggetti ad attacchi XSS e come tali dovrebbero essere evitati. Un cookie HttpOnly non è accessibile da JavaScript e viene automaticamente inviato al server di origine su ogni richiesta, quindi si adatta perfettamente al caso d’uso.,

Scegli la migliore libreria JWT

A seconda della lingua e dell’ambiente in uso, puoi scegliere tra una serie di librerie. I più popolari sono elencati nel jwt.io sito web.

Non usare JWTs come token di sessione

Non dovresti usare JWTs per le sessioni. Utilizza un normale meccanismo di sessione lato server, in quanto è molto più efficiente e meno soggetto all’esposizione dei dati.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *