Autenticação
O CSGOFlip utiliza Steam OAuth para autenticação, com sessões Redis para gerenciamento de estado e 2FA opcional para operações sensíveis.
Visão Geral
┌─────────────────────────────────────────────────────────────────┐
│ FLUXO DE AUTENTICAÇÃO │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Steam │ │ Backend │ │ Redis │ │
│ │ OAuth │◄────►│ API │◄────►│ Sessions │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Dados │ │ Sessão │ │ TTL │ │
│ │ do Steam │ │ Criada │ │ 7 dias │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘Componentes do Sistema
1. Steam OAuth
- Login via conta Steam (OpenID 2.0)
- Não armazenamos senhas
- Dados obtidos: steamId, username, avatar
2. Sessions (Redis)
- Session ID de 32 caracteres
- Armazenamento no Redis
- TTL de 7 dias
- Suporte a múltiplos dispositivos
3. 2FA (Two-Factor Authentication)
- TOTP (Time-based One-Time Password)
- Google Authenticator compatível
- Obrigatório para saques acima de threshold
Fluxo Simplificado
1. Usuário clica "Login with Steam"
2. Redirect para Steam
3. Steam autentica e retorna dados
4. Backend cria/atualiza usuário
5. Backend cria sessão no Redis
6. Cookie com sessionId é setado
7. Usuário está logadoEndpoints
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /auth/steam/login | Inicia login Steam |
| GET | /auth/steam/callback | Callback do Steam |
| POST | /auth/logout | Logout (remove sessão) |
| POST | /auth/logout-all | Logout de todos dispositivos |
| GET | /auth/me | Dados do usuário logado |
| GET | /auth/sessions | Lista sessões ativas |
| POST | /auth/2fa/enable | Ativa 2FA |
| POST | /auth/2fa/disable | Desativa 2FA |
| POST | /auth/2fa/verify | Verifica código 2FA |
Proteções de Segurança
| Proteção | Descrição |
|---|---|
| Session-based | Revogação instantânea |
| HttpOnly Cookie | Não acessível via JS |
| Secure Cookie | Apenas HTTPS |
| SameSite | Proteção CSRF |
| IP Tracking | Detecta mudanças suspeitas |
| Rate Limiting | 5 tentativas/15 min |
| 2FA | Para operações sensíveis |
Diagrama de Estados
┌─────────────┐
│ Visitante │
│ (não logado)│
└──────┬──────┘
│ Login Steam
▼
┌─────────────┐
│ Logado │
│ (sessão │
│ ativa) │
└──────┬──────┘
│
├──────────────────┐
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Logout │ │ Banido │
│ (sessão │ │ (sessão │
│ removida) │ │ revogada) │
└─────────────┘ └─────────────┘Páginas desta Seção
- Steam OAuth - Fluxo completo de login
- Gestão de Sessões - Redis e múltiplos dispositivos
- 2FA (TOTP) - Autenticação de dois fatores
- Autorização Admin - Acesso ao painel admin
