Sobre o projeto
jwt-go é uma biblioteca Go pronta para produção que implementa JSON Web Tokens (JWT) conforme definido na RFC 7519. Ela oferece suporte abrangente para análise, verificação, geração e assinatura de JWTs, sendo uma ferramenta fundamental para autenticação e autorização em aplicações Go.
A biblioteca suporta múltiplos algoritmos de assinatura, incluindo HMAC SHA, RSA, RSA-PSS e ECDSA, com hooks disponíveis para adicionar métodos de assinatura personalizados. Segue o Semantic Versioning 2.0.0 e é considerada estável para uso em produção.
Principais recursos incluem:
- Análise e verificação de JWTs
- Geração e assinatura de JWTs
- Suporte para algoritmos de assinatura HMAC SHA, RSA, RSA-PSS e ECDSA
- Arquitetura extensível permitindo métodos de assinatura personalizados via interface SigningMethod
- Pontos de integração para serviços de gerenciamento de chaves de terceiros (GCP, AWS KMS, TPM, JWKS)
- Design consciente de segurança que requer opt-in explícito para JWTs não seguros (alg=none)
- Utilitário de linha de comando (cmd/jwt) para criação, análise e depuração de tokens
O projeto originou-se como um fork de dgrijalva/jwt-go após o autor original sugerir a migração da manutenção para uma equipe dedicada de mantenedores de código aberto. A versão v4.0.0 introduziu suporte a módulos Go, mantendo compatibilidade retroativa com tags v3.x.y. A versão v5.0.0 trouxe melhorias significativas na validação de tokens, mas não é totalmente compatível com versões anteriores.
A biblioteca enfatiza boas práticas de segurança, incluindo a validação do parâmetro 'alg' para prevenir vulnerabilidades críticas em bibliotecas JWT. Recomenda-se atualizar para Go 1.15 ou posterior devido a um problema de segurança no pacote crypto/elliptic de versões anteriores do Go.
A conformidade com a RFC 7519 é mantida com uma diferença notável: tokens usando alg=none são aceitos apenas se a constante jwt.UnsafeAllowNoneSignatureType for fornecida como chave, protegendo contra o uso acidental de JWTs não seguros.
O projeto inclui documentação extensa, exemplos e um site dedicado de documentação. Também publica todos os componentes necessários para adicionar métodos de assinatura personalizados ou funções de chave, tornando-a altamente extensível para diversos casos de uso, incluindo integrações com provedores de nuvem e módulos de segurança de hardware.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.