Junior — Middle
Aké sú hlavné výhody a nevýhody používania JSON Web Token pre overovanie a autorizáciu?
sobes.tech AI
Odpoveď od AI
Výhody JSON Web Token (JWT):
- Samostatnosť: JWT obsahuje všetky potrebné informácie na autentifikáciu a autorizáciu, čo umožňuje neukladanie stavu na serveri.
- Škálovateľnosť: vďaka absencii stavu na serveri je ľahké škálovať aplikácie.
- Jednoduchý prenos: JWT je kompaktný reťazec, ktorý je vhodný na prenos v HTTP hlavičkach alebo URL.
- Bezpečnosť: JWT môže byť podpísaný (napríklad pomocou HMAC alebo RSA), čo zaručuje integritu a pravosť tokenu.
Nevýhody JWT:
- Nemožnosť odvolania: po vydaní JWT nie je ľahké token odvolať pred jeho vypršaním, ak nie je implementovaný dodatočný mechanizmus.
- Veľkosť tokenu: JWT môže byť dosť veľký, najmä ak obsahuje veľa dát, čo zvyšuje záťaž siete.
- Bezpečnosť uloženia: ak je token uložený na klientovi (napríklad v localStorage), môže byť náchylný na XSS útoky.
- Zložitosť aktualizácie: aktualizácia dát vnútri tokenu vyžaduje vydanie nového tokenu.
Príklad použitia JWT v Node.js:
const jwt = require('jsonwebtoken');
// Vytvorenie tokenu
const token = jwt.sign({ userId: 123 }, 'tajny_klic', { expiresIn: '1h' });
// Overenie tokenu
try {
const payload = jwt.verify(token, 'tajny_klic');
console.log(payload.userId);
} catch (e) {
console.error('Neplatný alebo expirovaný token');
}