Junior — Middle
Jakie są główne zalety i wady korzystania z JSON Web Token do uwierzytelniania i autoryzacji?
sobes.tech AI
Odpowiedź od AI
Zalety JSON Web Token (JWT):
- Samodzielność: JWT zawiera wszystkie niezbędne informacje do uwierzytelniania i autoryzacji, co pozwala na brak przechowywania stanu na serwerze.
- Skalowalność: dzięki braku stanu na serwerze, łatwo skalować aplikacje.
- Łatwa transmisja: JWT to kompaktowy ciąg znaków, który jest wygodny do przesyłania w nagłówkach HTTP lub URL.
- Bezpieczeństwo: JWT można podpisać (np. za pomocą HMAC lub RSA), co gwarantuje integralność i autentyczność tokena.
Wady JWT:
- Brak możliwości odwołania: po wydaniu JWT, nie można łatwo unieważnić tokena przed jego wygaśnięciem, chyba że zaimplementuje się dodatkowy mechanizm.
- Rozmiar tokena: JWT może być dość duży, szczególnie jeśli zawiera dużo danych, co zwiększa obciążenie sieci.
- Bezpieczeństwo przechowywania: jeśli token jest przechowywany na kliencie (np. w localStorage), może być podatny na ataki XSS.
- Złożoność aktualizacji: aktualizacja danych wewnątrz tokena wymaga wydania nowego tokena.
Przykład użycia JWT w Node.js:
const jwt = require('jsonwebtoken');
// Tworzenie tokena
const token = jwt.sign({ userId: 123 }, 'tajny_klucz', { expiresIn: '1h' });
// Weryfikacja tokena
try {
const payload = jwt.verify(token, 'tajny_klucz');
console.log(payload.userId);
} catch (e) {
console.error('Nieprawidłowy lub wygasły token');
}