Sobes.tech
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');
}