Pubblicato il

jwt

auth

json

client

server

cosa sono i jwt json web tokens differenze tra jwt e session cookies

Ciao a tutti e benvenuti in questa guida dove vi parlerò di cosa sono i JWT (JSON Web Tokens) e come possono rendere la vostra vita da sviluppatori più semplice.

I JWT sono degli oggetti (tokens) che permettono di inviare dati ad un server usando il formato JSON. Questo è molto utile per creare un sistema di autenticazione user stateless.

Come funzionano i JWT?

Come ormai sarete a conoscenza, l’autenticazione dell’user e la gestione delle sessioni, vengono quasi sempre fatte attraverso l’uso dei Cookies. Il processo di login con un sistema basato sui cookies di solito è basato su quattro passaggi:

  1. Cliente invia dettagli di login
  2. Server risponde con il cookie ed il session ID
  3. Cliente ri-invia il cookie quando richiede una nuova pagina
  4. Server effettua un controllo sul cookie e accetta / rifiuta la connessione

Con l’uso dei JSON Web Tokens il processo è molto simile ma con alcune differenze:

Anche con i JWT, quando il client effettua il login correttamente il server gli invia in risposta un token. Questo token viene salvato nel local storage ed inviato al server che effettuerà i controlli necessari e risponderà.

La differenza principale è che con l’utilizzo delle sessions, il server ha bisogno di salvare i dati relativi ai suoi user in memoria. Nel caso dei JWT invece tutti i dati necessari sono contenuti nel token stesso, rendendo il server stateless. 

Questo ci può tornare molto utile quando stiamo sviluppando applicazioni a singola pagina, dove il codice client è completamente indipendente dal codice server. 

Vediamo l’aspetto di un tipico JWT e come i dati sono salvati:

Questo è l’aspetto di un tipico JWT:

asd73Gajh78.a7863BSH8a.IUAS12

Non lo capite? Questo è perché I JWT sono codificati con Base64url.

Anche dalla stringa codificata possiamo vedere che il token è diviso in tre parti, divise da punti

Queste parti sono:

  • Header
  • Payload
  • Signature


Header

Il header contiene informazioni relative al tipo di token ed il tipo di algoritmo usato per il hashing
Per esempio un header prima della codifica può avere un aspetto del tipo:

{
"alg": "HS256",
"typ": "JWT"
}


Payload

 Il payload è il corpo principale del JWT e contiene informazioni specifiche per l’applicazione (tipicamente informazioni sull’utente)

{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}

Signature

Questa parte viene usata per assicurarsi che colui che invia il token sia veramente l’utente registrato, e per controllare se il massaggio sia stato cambiato in alcun modo. La signature è composta da il header + il payload codificati in Base64 + un secret

Le tre parti del JWT vengono codificate in Base64 e divise da un punto per formate qualcosa del genere:


come usare i jwt JSON web tokens e differenze tra cookies e sessions


I JSON Web Tokens possono essere utilizzati con qualsiasi linguaggio e piattaforma, ed il modo in cui vengono inviati è molto flessibile. Infatti si possono inviare i JWT nel body, header o anche nell’url di una richiesta HTTP


Per ulteriori informazioni sui JWT potete visitare la documentazione di JWT su https://jwt.io

Grazie per aver seguito questo post su cosa sono i JWT, ci vediamo alla prossima 

Se hai una domanda puoi farla anche nella sezione commenti in basso

Grazie per aver letto questa guida suDevnews.it

Spero ti sia stata utile in qualche modo. Ti prego di supportare questa pagina mettendo mi piace alle nostre pagine social cliccando un basso, dove pubblichiamo regolermente notizie, tutorial e fatti curiosi sull'informatica. Grazie e ci vediamo alla prossima :)