这个项目能做什么
jwt-go 是一个生产就绪的 Go 库,实现了 RFC 7519 定义的 JSON Web Tokens (JWT)。它全面支持 JWT 的解析、验证、生成和签名,是 Go 应用中认证与授权的基础工具。
该库支持多种签名算法,包括 HMAC SHA、RSA、RSA-PSS 和 ECDSA,并提供用于添加自定义签名方法的扩展点。项目遵循 Semantic Versioning 2.0.0,并被认为适用于生产环境。
主要功能包括:
- JWT 的解析与验证
- JWT 的生成与签名
- 支持 HMAC SHA、RSA、RSA-PSS 和 ECDSA 签名算法
- 可扩展架构,可通过 SigningMethod interface 添加自定义签名方法
- 与第三方密钥管理服务(GCP、AWS KMS、TPM、JWKS)的集成点
- 注重安全性的设计,要求显式选择支持未签名 JWT(alg=none)
- 命令行工具(cmd/jwt),用于创建、解析和调试令牌
该项目源自 dgrijalva/jwt-go 的分支;原作者建议将维护工作转移给专门的开源维护团队。v4.0.0 引入 Go module 支持,同时保持与 v3.x.y 标签的向后兼容性。v5.0.0 对令牌验证带来了重大改进,但并非完全向后兼容。
该库强调安全最佳实践,包括验证 'alg' 参数,以防止 JWT 库中的关键漏洞。由于旧版 Go 的 crypto/elliptic 包存在安全问题,项目建议使用 Go 1.15 或更高版本。
项目遵循 RFC 7519,但有一个显著差异:只有在使用 jwt.UnsafeAllowNoneSignatureType 作为密钥时,才会接受使用 alg=none 的令牌,以防止意外使用未签名 JWT。
项目包含详尽的文档、示例和专门的文档网站。它还发布添加自定义签名方法或密钥函数所需的全部组件,使其可通过各种用例高度扩展,包括云服务商集成和硬件安全模块。
评论
0 评分人数达到10人后显示
登录后参与讨论。