Blog

sviluppatrice web che lavora al pc entusiasta

Cos’è il json web token

In questo articolo apprenderemo cos’è il Json Web Token. Se ti è capitato già di utilizzare Json nel corso della tua carriera da programmatore, potresti esserti imbattuto in questo strumento, abbreviato in JWT che JSON implementa.

Facciamo un piccolo passo indietro però.

 

JSON, cos’è?

È un formato di serializzazione basato su testo per lo scambio di dati tra server e app web. È la struttura più utilizzata all’interno dei database NoSQL. Acronimo di JavaScript Object Notation, è famoso per la diffusione del file json.

Il formato JSON è basato su due tipi di strutture di dati: serie di coppie nome/valore – {“name1″:”value1”, “name2″:”value2”} – e liste ordinate di valori, chiamate array – [“valore1”, “valore2”]. Molto simili ai dizionari in Python o gli HashMap in Java.

Questi dati vengono letti da un parser JSON che li converte nel tipo di dati appropriato per il linguaggio di programmazione usato nel recupero dei dati. Ecco perché ad oggi parliamo di formato JSON.

Vediamo insieme un file JSON esempio:

 

[
  {
    "name": "Gianvito",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "Pierpaolo",
    "favorite-game": "Forza Horizon 5",
    "subscriber": true
  }
]

Il JSON Web Token (JWT) è un modo sicuro per trasmettere informazioni tra le parti sotto forma di oggetto JSON. Queste informazioni sono affidabili perché sono firmate digitalmente. L’autorizzazione è lo scenario più comune per l’utilizzo di JWT. Una volta che l’utente ha effettuato l’accesso, ogni richiesta successiva includerà il JWT, consentendo all’utente di accedere ai percorsi, ai servizi e alle risorse consentite con quel token.

Nella sua forma compatta, il JSON Web Token è composto da tre parti separate da punti (.). Pertanto, un JWT si presenta tipicamente come segue.

casa.lavoro.bar

Header: l’header contiene le informazioni sul tipo di token e sull’algoritmo di hash utilizzato per la firma e la codifica. Nel nostro esempio, si può notare che stiamo usando un hash HS256.

Payload: La seconda parte del token è il payload, che contiene le richieste.

  • Issuer (iss)
  • Subject (sub)
  • Audience (aud)
  • Expiration time (exp) – in formato unix timestampt
  • Issued at (iat) – in formato unix timestampt

Inoltre, tenete presente che il payload può essere facilmente decodificato, quindi non dovete inviare dati critici o sensibili.

  • Signature: la firma è l’ultima e più importante parte del JWT. La codice Base64url viene utilizzata per calcolare la signature codificando l’intestazione e il payload e concatenandoli con un separatore di punti.

Come funziona il Json Web Token?

L’utente si iscrive con la propria e-mail/password. Queste informazioni vengono ricevute dal server di autenticazione.

Il server di autenticazione verifica la combinazione email/password. Se la combinazione è corretta, genera il token web JSON. A tale scopo, è possibile utilizzare il sale segreto o la chiave privata. Il JWT viene restituito all’utente. Il JWT viene solitamente memorizzato sul client nei dati di sessione. A tale scopo, si possono utilizzare cookie o database.

Il client può utilizzare il JWT generato e memorizzato per accedere ai dati protetti sul server. Il client lo farà includendo il JWT nell’intestazione di autorizzazione HTTP di ogni prossima richiesta che farà alla risorsa protetta.

Nell’ultima fase, il server delle risorse riceve la richiesta con il JWT. Verifica l’autenticità del token web JSON. Se è corretto, legge la risorsa e la restituisce all’utente.

 

Articoli correlati

Il linguaggio HTML (Hypertext Markup Language) è uno dei più conosciuti e diffusi: lo si trova infatti praticamente in tutte le pagine web esistenti. È una scelta popolare tra i principianti che si…
Essere uno sviluppatore web vuol dire imparare più linguaggi di programmazione per poter creare diversi tipi di applicazioni.  Per ogni applicazione, la maggior parte delle volte, …
Un buon programmatore, si sa, necessita di un ampio bagaglio di conoscenze per potersi districare tra le difficoltà che questo mestiere comporta. Oggi le richieste sul mercato sono molteplic…
La programmazione JavaScript ha subito un forte cambiamento con l’introduzione di Node.js, che è subito diventato un requisito fondamentale nello sviluppo di un’app in linguaggio JavaScript lato …
Qualsiasi programmatore informatico che si rispetti, ne abbiamo parlato tante volte, possiede una buona conoscenza dello strumento GitHub. Ad oggi, risulta essere un requisito spesso e volentieri nece…
Il frontend è una parte fondamentale dello sviluppo di siti web. Il ruolo dello sviluppatore front end è, ad oggi, una figura sempre più ricercata e diffusa, grazie all’ampio mercato che il web d…

Seguici su Facebook

Scopri di più sul corso Hackademy

Inizia la tua nuova carriera nel mondo digital e tech.

Candidati ora

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.

Pagamento rateale

Valore della rata: A PARTIRE DA 112 €/mese.

Esempio di finanziamento  

Importo finanziato: € 2440 in 24 rate da € 112 – TAN fisso 9,37% TAEG 12,57% – importo totale del credito € 2788,68.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/07/2023 al 31/12/2023.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 183 €/mese.

Esempio di finanziamento 

Importo finanziato: € 3990 in 24 rate da € 183 – TAN fisso 9,37% TAEG 12,57% – importo totale del credito € 4496,56.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/07/2023 al 31/12/2023.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.