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

jwt-go — это готовая к производственному использованию библиотека Go, реализующая JSON Web Tokens (JWT) в соответствии с RFC 7519. Она обеспечивает всестороннюю поддержку разбора, проверки, генерации и подписи JWT, что делает её основополагающим инструментом для аутентификации и авторизации в приложениях на Go. Библиотека поддерживает несколько алгоритмов подписи, включая HMAC SHA, RSA, RSA-PSS и ECDSA, с возможностью добавления пользовательских методов подписи через хуки. Она следует Semantic Versioning 2.0.0 и считается стабильной для производственного использования. Ключевые возможности включают: - Разбор и проверку JWT - Генерацию и подпись JWT - Поддержку алгоритмов подписи HMAC SHA, RSA, RSA-PSS и ECDSA - Расширяемую архитектуру, позволяющую добавлять пользовательские методы подписи через интерфейс SigningMethod - Точки интеграции для сторонних сервисов управления ключами (GCP, AWS KMS, TPM, JWKS) - Безопасный дизайн, требующий явного согласия на использование незащищённых JWT (alg=none) - Утилиту командной строки (cmd/jwt) для создания токенов, их разбора и отладки Проект возник как форк dgrijalva/jwt-go после того, как оригинальный автор предложил передать сопровождение выделенной команде мейнтейнеров с открытым исходным кодом. Версия v4.0.0 ввела поддержку модулей Go, сохранив обратную совместимость с тегами v3.x.y. Версия v5.0.0 принесла значительные улучшения в проверке токенов, но не полностью обратно совместима. Библиотека уделяет особое внимание лучшим практикам безопасности, включая проверку параметра 'alg' для предотвращения критических уязвимостей в JWT-библиотеках. Рекомендуется обновление до Go 1.15 или новее из-за проблемы безопасности в пакете crypto/elliptic в старых версиях Go. Соответствие RFC 7519 поддерживается с заметным отличием: токены с alg=none принимаются только в том случае, если в качестве ключа предоставлена константа jwt.UnsafeAllowNoneSignatureType, что защищает от случайного использования незащищённых JWT. Проект включает обширную документацию, примеры и выделенный веб-сайт с документацией. Он также публикует все необходимые компоненты для добавления пользовательских методов подписи или ключевых функций, что делает его высоко расширяемым для различных случаев использования, включая интеграции с облачными провайдерами и аппаратными модулями безопасности.