Sobre o projeto
jsonwebtoken é uma implementação Node.js amplamente utilizada de JSON Web Tokens (RFC 7519) desenvolvida pela Auth0. Ela permite autenticação e autorização seguras baseadas em tokens em aplicações Node.js.
Principais capacidades:
- **Assinatura de token (jwt.sign)**: Cria JWTs com claims de payload (exp, nbf, aud, iss, sub, jti, iat) usando algoritmos simétricos (HMAC) ou assimétricos (RSA, ECDSA, RSA-PSS). Suporta operação síncrona e assíncrona. As opções incluem seleção de algoritmo (padrão HS256), tempos de expiração (expiresIn, notBefore), cabeçalhos personalizados, IDs de chave e permissão de tamanhos de chave inseguros para chaves RSA legadas.
- **Verificação de token (jwt.verify)**: Valida assinaturas e claims do token. Aceita segredos, chaves públicas PEM ou um callback de busca de chave (útil com endpoints JWKS). Valida algoritmos, audiência, emissor, JWT ID, assunto, expiração (com clockTolerance), not-before e idade máxima do token. Retorna o payload decodificado ou o objeto completo do token (header, payload, signature) quando a opção complete é definida.
- **Decodificação de token (jwt.decode)**: Inspeciona o payload e o cabeçalho do token sem verificação de assinatura (não usar para entradas não confiáveis).
- **Algoritmos suportados**: HS256, HS384, HS512 (HMAC); RS256, RS384, RS512 (RSASSA-PKCS1-v1_5); PS256, PS384, PS512 (RSASSA-PSS, Node ≥6.12.0/≥8.0.0); ES256, ES384, ES512 (ECDSA); e "none" (não seguro).
- **Tratamento de erros**: Tipos de erro distintos (TokenExpiredError, JsonWebTokenError, NotBeforeError) com propriedades detalhadas para tratamento programático.
- **Notas de segurança**: Módulo RSA mínimo de 2048 bits aplicado por padrão; segredos codificados em base64 suportados via Buffer.from; payloads de fontes não confiáveis devem ser sanitizados.
A biblioteca é licenciada sob MIT, mantida pela Auth0 e integra-se com soluções de gerenciamento de chaves como node-jwks-rsa para chaves rotativas. Existem guias de migração para atualizações de versões principais.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.