Skip to content

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á logado

Endpoints

MétodoEndpointDescrição
GET/auth/steam/loginInicia login Steam
GET/auth/steam/callbackCallback do Steam
POST/auth/logoutLogout (remove sessão)
POST/auth/logout-allLogout de todos dispositivos
GET/auth/meDados do usuário logado
GET/auth/sessionsLista sessões ativas
POST/auth/2fa/enableAtiva 2FA
POST/auth/2fa/disableDesativa 2FA
POST/auth/2fa/verifyVerifica código 2FA

Proteções de Segurança

ProteçãoDescrição
Session-basedRevogação instantânea
HttpOnly CookieNão acessível via JS
Secure CookieApenas HTTPS
SameSiteProteção CSRF
IP TrackingDetecta mudanças suspeitas
Rate Limiting5 tentativas/15 min
2FAPara 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

Documentação Técnica CSGOFlip