Об этом проекте
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.
Проект включает обширную документацию, примеры и выделенный веб-сайт с документацией. Он также публикует все необходимые компоненты для добавления пользовательских методов подписи или ключевых функций, что делает его высоко расширяемым для различных случаев использования, включая интеграции с облачными провайдерами и аппаратными модулями безопасности.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.