Skip to main content

Autenticação e Autorização

O FitLocus implementa um sistema robusto de autenticação e autorização para proteger os dados dos usuários e garantir que apenas usuários autorizados possam acessar recursos específicos.

Visão Geral

O sistema de autenticação do FitLocus combina:
  1. Autenticação Tradicional: Login com email e senha
  2. Autenticação Social: Login com Google via Firebase Auth
  3. Tokens JWT: Para autenticação stateless entre cliente e servidor
  4. Controle de Acesso: Baseado em tipos de usuário e níveis de assinatura

Fluxo de Autenticação

Implementação no Backend

Configuração de Segurança

O backend utiliza Spring Security para configurar a segurança da API:

Filtro JWT

Um filtro personalizado processa e valida os tokens JWT em cada requisição:

Serviço JWT

Um serviço dedicado gerencia a criação, validação e extração de informações dos tokens JWT:

Integração com Firebase Auth

Para autenticação social, o backend integra-se com o Firebase Auth:

Implementação no Frontend

Armazenamento de Token

No frontend, o token JWT é armazenado de forma segura:

Contexto de Autenticação

Um contexto React gerencia o estado de autenticação:

Proteção de Rotas

Web (Next.js)

No Next.js, um middleware protege as rotas que requerem autenticação:

Mobile (React Native)

No React Native, um componente de rota protegida controla o acesso:

Autorização

Além da autenticação, o sistema implementa autorização baseada em:

Tipos de Usuário

O sistema suporta diferentes tipos de usuário com permissões específicas:

Níveis de Assinatura

Os recursos disponíveis também dependem do nível de assinatura do usuário:

Validadores de Acesso

Validadores específicos controlam o acesso a recursos premium:

Segurança Adicional

O sistema implementa medidas adicionais de segurança:

Proteção contra CSRF

Configuração para proteção contra ataques CSRF em endpoints sensíveis.

Limitação de Taxa

Limitação de tentativas de login para prevenir ataques de força bruta:

Validação de Entrada

Validação rigorosa de todas as entradas do usuário para prevenir injeções e outros ataques.

Logs de Segurança

Registro de eventos de segurança para auditoria e detecção de atividades suspeitas.

Fluxo de Recuperação de Senha

O sistema também implementa um fluxo de recuperação de senha:
  1. Usuário solicita redefinição de senha fornecendo email
  2. Sistema gera token de redefinição com expiração
  3. Email enviado com link contendo o token
  4. Usuário acessa o link e define nova senha
  5. Sistema valida o token e atualiza a senha

Considerações de Segurança

  • Senhas armazenadas com hash usando BCrypt
  • Tokens JWT com tempo de expiração curto (1 hora)
  • Renovação de tokens para sessões mais longas
  • Validação de origem de requisições (CORS)
  • Sanitização de dados de entrada e saída