Per quelli di voi che non hanno usato i token Web JSON, possiamo dire che si tratta di un sistema di autenticazione basato su token. Il token può inoltre contenere delle informazioni, non sensibili, tramite un payload JSON codificato.
I vantaggi principali dei token Web JSON sono duplici: non è necessario utilizzare sessioni o cookie per mantenere l’autenticazione e non è necessario chiamare costantemente il database per le informazioni dell’utente in quanto possono essere archiviate nel payload del token.
Ogni token è suddiviso in tre parti e ogni parte è separata da un punto:
- Header: contiene informazioni sul tipo di token, generalmente JWT e sull’algoritmo di hashing utilizzato, ad esempio HMAC SHA256 o RSA.
- Payload: contiene tutte le informazioni che si desidera trasferire all’utente, ad esempio l’identificatore utente.
- Signature: protegge il token ed è un hash dell’intestazione e del payload codificati, insieme a una chiave.
Quando viene ricevuto un token, sarà necessario convalidare la firma con la chiave concordata. Se qualcuno dovesse manomettere l’intestazione o il payload, la firma non corrisponderebbe e l’autenticazione fallirebbe.
Con queste poche righe è possibile creare un token JWT in PHP:
<?php
$key = 'Kam124Sfa';
$header = json_encode(['typ' => 'JWT', 'alg' => 'HS256']);
$payload = json_encode(['id_user' => 111]);
$base64UrlHeader = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($header));
$base64UrlPayload = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($payload));
$signature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, $key, true);
$base64UrlSignature = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($signature));
$jwt = $base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature;
echo $jwt;
enjoy!
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta