Проверяет понимание механизма валидации JWT-токенов, что критично для безопасной аутентификации в веб-приложениях.
JWT (JSON Web Token) — это компактный способ передать подписанные данные между сторонами. Токен выглядит как три Base64Url-строки, разделённые точками: header.payload.signature. Проверка подлинности нужна, чтобы убедиться, что токен не был подделан и выпущен доверенной стороной.
Сервер берёт строку header.payload и применяет к ней тот же алгоритм с секретным ключом (для HS256) или приватным ключом (для RS256). Полученный результат сравнивается с signature из токена. Если они совпадают — токен подлинный.
const jwt = require('jsonwebtoken');
// Проверка токена с секретным ключом
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
console.log('Payload:', decoded);
} catch (err) {
// Неверная подпись или истёк срок
console.error('Invalid token:', err.message);
}
После успешной проверки подписи нужно валидировать claims: exp (срок действия), nbf (не раньше), iss (издатель), aud (аудитория). Библиотеки вроде jsonwebtoken делают это автоматически, но важно явно указывать ожидаемые значения.
В RS256 подпись создаётся приватным ключом, а проверяется публичным. Это удобно в микросервисах: сервис-эмитент подписывает токен, а остальные проверяют его публичным ключом, не имея доступа к секрету.
Итог: проверка JWT — это комбинация криптографической валидации подписи и проверки claims. Применяйте её на каждом защищённом эндпоинте, чтобы гарантировать, что запрос пришёл от аутентифицированного пользователя с неподделанным токеном.
Уровень
Рейтинг:
5
Сложность:
5
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию