Об этом проекте

jsonwebtoken — широко используемая реализация JSON Web Tokens (RFC 7519) для Node.js, разработанная Auth0. Она обеспечивает безопасную аутентификацию и авторизацию на основе токенов в приложениях Node.js. Ключевые возможности: - **Подпись токена (jwt.sign)**: создание JWT с утверждениями полезной нагрузки (exp, nbf, aud, iss, sub, jti, iat) с использованием симметричных (HMAC) или асимметричных (RSA, ECDSA, RSA-PSS) алгоритмов. Поддерживает синхронную и асинхронную работу. Параметры включают выбор алгоритма (по умолчанию HS256), сроки действия (expiresIn, notBefore), пользовательские заголовки, идентификаторы ключей и разрешение небезопасных размеров ключей для устаревших ключей RSA. - **Проверка токена (jwt.verify)**: проверка подписей и утверждений токена. Принимает секреты, открытые ключи PEM или функцию обратного вызова для получения ключа (полезно с конечными точками JWKS). Проверяет алгоритмы, аудиторию, издателя, идентификатор JWT, субъект, срок действия (с clockTolerance), not-before и максимальный возраст токена. Возвращает декодированную полезную нагрузку или полный объект токена (заголовок, полезная нагрузка, подпись), если установлен параметр complete. - **Декодирование токена (jwt.decode)**: просмотр полезной нагрузки и заголовка токена без проверки подписи (не для ненадёжного ввода). - **Поддерживаемые алгоритмы**: HS256, HS384, HS512 (HMAC); RS256, RS384, RS512 (RSASSA-PKCS1-v1_5); PS256, PS384, PS512 (RSASSA-PSS, Node ≥6.12.0/≥8.0.0); ES256, ES384, ES512 (ECDSA); и "none" (без защиты). - **Обработка ошибок**: отдельные типы ошибок (TokenExpiredError, JsonWebTokenError, NotBeforeError) с подробными свойствами для программной обработки. - **Примечания по безопасности**: по умолчанию требуется модуль RSA не менее 2048 бит; поддерживаются секреты в кодировке base64 через Buffer.from; полезные нагрузки из ненадёжных источников следует очищать. Библиотека распространяется по лицензии MIT, поддерживается Auth0 и интегрируется с решениями для управления ключами, такими как node-jwks-rsa, для ротации ключей. Для обновлений между основными версиями существуют руководства по миграции.