Вопрос проверяет понимание структуры и назначения JWT токенов.
JWT (JSON Web Token) — это стандарт для безопасной передачи информации между сторонами в виде JSON-объекта. Токен состоит из трех частей: заголовка (header), полезной нагрузки (payload) и подписи (signature). Эти части разделяются точками и кодируются в Base64.
JWT — популярный стандарт для аутентификации и авторизации в веб-приложениях.
Структура JWT:
Токен имеет формат: header.payload.signature
Header:
Содержит информацию о типе токена и алгоритме подписи
Пример: {"alg": "HS256", "typ": "JWT"}
Payload:
Содержит claims (утверждения) — информацию о пользователе и дополнительные данные
Пример: {"sub": "123", "name": "John", "exp": 1516239022}
Signature:
Создается путем подписи закодированных header и payload с использованием секретного ключа
Гарантирует целостность токена
Пример создания JWT в Node.js:
const jwt = require('jsonwebtoken');
const token = jwt.sign(
{ userId: 123, role: 'admin' },
'secret-key',
{ expiresIn: '1h' }
);
console.log(token); // header.payload.signatureПреимущества JWT:
Статусность (не требует хранения на сервере)
Поддержка разных алгоритмов подписи
Легкая проверка подлинности
Безопасность:
Всегда используйте HTTPS
Храните секретные ключи безопасно
Устанавливайте разумное время expiration