Auth Service (Identidade)
Visão Geral
O Auth Service (ou frota-auth) é o microsserviço responsável exclusivamente pela gestão de identidade e controle de acesso.
Ele atua como um Identity Provider (IdP) para o ecossistema FrotaNext: valida credenciais, emite tokens de acesso (JWT) e gerencia o cadastro de novos usuários.
🔐 Arquitetura de Segurança
Diferente do Backend Principal, este serviço foca em criptografia e validação.
graph TD
User(Login Request) --> Router[Auth Router]
Router --> Service[Auth Service]
Service --> Hash[🔐 Argon2 Hasher]
Service --> JWT[🎫 JWT Factory]
Service --> DB[(🗄️ PostgreSQL)]
classDef secure fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px;
class Hash,JWT secure;
Componentes Chave
seguranca.py: Módulo core que contém:- Configuração do Passlib para hash de senhas.
- Configuração do Python-Jose para criar e decodificar tokens JWT.
- Routers: Endpoints para login (
/token), cadastro de PF (/clientes/pf) e PJ (/clientes/pj).
🛡️ Padrões de Segurança
Utilizamos padrões da indústria para garantir que os dados sensíveis estejam protegidos.
1. Hash de Senha (Argon2)
Não salvamos senhas em texto puro. Utilizamos o algoritmo Argon2, vencedor da Password Hashing Competition, que é resistente a ataques de força bruta baseados em GPU.
2. Tokens JWT (JSON Web Tokens)
A autenticação é stateless (sem sessão no servidor).
- Formato: Bearer Token.
- Algoritmo de Assinatura: HS256 (HMAC com SHA-256).
- Payload: O token carrega o
sub(ID do usuário) e otipo(admin, cliente_pf, cliente_pj), permitindo que o Backend Principal valide permissões sem consultar o banco toda vez.
🚦 Fluxo de Autenticação
- Login: O Frontend envia
emailesenhapara o endpoint/auth/token. - Validação: O Auth Service busca o hash no banco e compara com a senha enviada.
- Emissão: Se válido, retorna um
access_tokencom expiração definida (ex: 30 minutos). - Uso: O Frontend anexa esse token no header
Authorization: Bearer <token>para todas as requisições subsequentes ao Backend Principal.
🛠️ Comandos de Desenvolvimento
Dentro do container frota-auth (ou auth-service dependendo do seu docker-compose), você pode rodar:
| Comando | Descrição |
|---|---|
pytest -v |
Roda os testes de autenticação. |
alembic upgrade head |
(Se houver) Aplica migrações de banco específicas. |
Nota sobre a Pasta
Se você estiver rodando localmente fora do Docker, lembre-se que o código deste serviço reside na pasta frota-auth/ (anteriormente chamada de auth-api).