Junior — Middle
Jaké jsou hlavní výhody a nevýhody používání JSON Web Token pro autentizaci a autorizaci?
sobes.tech AI
Odpověď od AI
Výhody JSON Web Token (JWT):
- Samostatnost: JWT obsahuje všechny potřebné informace pro autentizaci a autorizaci, což umožňuje neukládat stav na serveru.
- Škálovatelnost: díky absenci stavu na serveru je snadné škálovat aplikace.
- Snadný přenos: JWT je kompaktní řetězec, který je vhodný k přenosu v HTTP hlavičkách nebo URL.
- Bezpečnost: JWT lze podepsat (například pomocí HMAC nebo RSA), což zaručuje integritu a pravost tokenu.
Nevýhody JWT:
- Nemožnost odvolání: po vydání JWT není snadné token odvolat před jeho vypršením, pokud není implementován dodatečný mechanismus.
- Velikost tokenu: JWT může být poměrně velký, obzvlášť pokud obsahuje hodně dat, což zvyšuje zátěž sítě.
- Bezpečnost uložení: pokud je token uložen na klientovi (například v localStorage), může být náchylný k XSS útokům.
- Složitost aktualizace: aktualizace dat uvnitř tokenu vyžaduje vydání nového tokenu.
Příklad použití JWT v Node.js:
const jwt = require('jsonwebtoken');
// Vytvoření tokenu
const token = jwt.sign({ userId: 123 }, 'tajny_klic', { expiresIn: '1h' });
// Ověření tokenu
try {
const payload = jwt.verify(token, 'tajny_klic');
console.log(payload.userId);
} catch (e) {
console.error('Neplatný nebo expirovaný token');
}