Introdução ao PyJWT
O JSON Web Token (JWT) tornou-se um padrão na área de autenticação e autorização de APIs. Ele permite transmitir informações de identificação entre o cliente e o servidor de forma segura, sem a necessidade de armazenar sessões no lado do servidor. Uma das bibliotecas mais populares em Python para trabalhar com JWT é o PyJWT.
PyJWT é uma biblioteca Python para trabalhar com tokens JWT que simplifica a criação, decodificação e verificação de JWTs, oferecendo suporte a diversos algoritmos de criptografia. Este artigo explicará em detalhes como usar o PyJWT de forma eficiente e segura em seu projeto.
Fundamentos do JWT (JSON Web Token)
Estrutura do Token JWT
O JWT é composto por três partes separadas por pontos:
header.payload.signature
- Header — contém o tipo do token e o algoritmo usado (ex: HS256)
- Payload — contém as claims (declarações), ou seja, os dados úteis
- Signature — usada para verificar a autenticidade do token
Vantagens do uso de JWT
- Stateless: o servidor não precisa armazenar sessões
- Compacto: fácil de transmitir em cabeçalhos HTTP
- Segurança: suporte a criptografia HMAC e RSA
- Multiplataforma: funciona em todas as linguagens de programação
- Autossuficiente: contém todas as informações necessárias sobre o usuário
Como o JWT funciona
O JWT funciona da seguinte forma:
- O usuário se autentica no servidor
- O servidor gera um token JWT com as informações do usuário
- O cliente armazena o token e o envia no cabeçalho Authorization
- O servidor verifica a assinatura do token e extrai os dados do usuário
Instalação e Configuração do PyJWT
Como instalar o PyJWT
pip install PyJWT
Para trabalhar com algoritmos RSA e ECDSA, instale as dependências adicionais:
pip install "PyJWT[crypto]"
Importação e configuração inicial
import jwt
import datetime
import os
from typing import Dict, Any
O PyJWT implementa completamente o padrão RFC 7519 e fornece uma interface simples para geração e verificação de tokens.
Descrição Detalhada da Biblioteca PyJWT
História e Desenvolvimento
O PyJWT foi criado em 2013 e é uma das bibliotecas mais populares para trabalhar com tokens JWT em Python. A biblioteca é ativamente desenvolvida e mantida pela comunidade, sendo atualizada regularmente para atender aos mais recentes padrões de segurança.
Arquitetura da Biblioteca
O PyJWT é construído sobre uma arquitetura modular com clara separação de responsabilidades:
- Núcleo de codificação/decodificação — funções principais para trabalhar com tokens
- Módulo de algoritmos — suporte a diversos algoritmos de criptografia
- Módulo de exceções — tratamento de erros e situações excepcionais
- Módulo de utilitários — funções auxiliares para trabalhar com tempo e chaves
Principais Funcionalidades
- Suporte a todos os algoritmos JWT padrão
- Verificação automática do tempo de vida do token
- Possibilidade de adicionar claims personalizadas
- Suporte a diferentes tipos de chaves (simétricas e assimétricas)
- Integração com frameworks web populares
Criação de Tokens JWT com PyJWT
Exemplo Básico
payload = {"user_id": 123}
secret = "minhachave"
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)
Definindo Prazo de Validade e Dados Adicionais
<Também na biblioteca
Cliente HTTP para Rust: principais bibliotecas e ferramentas
mimalloc para C++: guia completo com exemplos práticos
Internacionalização (i18n) em Kotlin: Guia Completo com Exemplos