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:
1 2 3 4 5 6 7 8 9 10 11 |
<?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!
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta