Sobre el proyecto
jwt-go es una biblioteca de Go lista para producción que implementa JSON Web Tokens (JWT) según lo definido en la RFC 7519. Ofrece soporte integral para analizar, verificar, generar y firmar JWTs, convirtiéndola en una herramienta fundamental para la autenticación y autorización en aplicaciones Go.
La biblioteca admite múltiples algoritmos de firma, incluidos HMAC SHA, RSA, RSA-PSS y ECDSA, con hooks disponibles para añadir métodos de firma personalizados. Sigue la Versionado Semántico 2.0.0 y se considera estable para su uso en producción.
Las características principales incluyen:
- Análisis y verificación de JWTs
- Generación y firma de JWTs
- Soporte para algoritmos de firma HMAC SHA, RSA, RSA-PSS y ECDSA
- Arquitectura extensible que permite métodos de firma personalizados mediante la interfaz SigningMethod
- Puntos de integración para servicios de gestión de claves de terceros (GCP, AWS KMS, TPM, JWKS)
- Diseño consciente de la seguridad que requiere una aceptación explícita para JWTs no seguros (alg=none)
- Una utilidad de línea de comandos (cmd/jwt) para la creación, análisis y depuración de tokens
El proyecto surgió como un fork de dgrijalva/jwt-go después de que el autor original sugiriera migrar el mantenimiento a un equipo dedicado de mantenedores de código abierto. La versión v4.0.0 introdujo soporte para módulos de Go manteniendo la compatibilidad retroactiva con las etiquetas v3.x.y. La versión v5.0.0 trajo mejoras importantes en la validación de tokens, pero no es totalmente compatible con versiones anteriores.
La biblioteca enfatiza las mejores prácticas de seguridad, incluida la validación del parámetro 'alg' para prevenir vulnerabilidades críticas en las bibliotecas JWT. Se recomienda actualizar a Go 1.15 o posterior debido a un problema de seguridad en el paquete crypto/elliptic de versiones antiguas de Go.
Se mantiene el cumplimiento con la RFC 7519 con una diferencia notable: los tokens que usan alg=none solo se aceptan si se proporciona la constante jwt.UnsafeAllowNoneSignatureType como clave, lo que protege contra el uso accidental de JWTs no seguros.
El proyecto incluye documentación extensa, ejemplos y un sitio web de documentación dedicado. También publica todos los componentes necesarios para añadir métodos de firma personalizados o funciones de clave, lo que la hace altamente extensible para diversos casos de uso, incluidas integraciones con proveedores de nube y módulos de seguridad de hardware.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.