Erros Comuns - ecosif-auth

Este documento lista os erros mais comuns ao integrar com a API ecosif-auth e como resolvê-los.

Erros de Autenticação

401 Unauthorized - "Token expirado"

Problema: Token JWT expirou (padrão: 30 minutos)

Solução:

// Fazer login novamente
const loginResponse = await fetch('http://localhost:8080/api/auth/signin', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    username: 'usuario@exemplo.com',
    password: 'senha123',
    azure: false
  })
});

const { accessToken } = await loginResponse.json();
// Usar novo token

401 Unauthorized - "Token inválido"

Problema: Token malformado ou assinatura inválida

Soluções: 1. Verifique se está incluindo "Bearer " antes do token: ```javascript // Correto headers: { 'Authorization': 'Bearer ' + token }

// Incorreto headers: { 'Authorization': token } ```

  1. Verifique se o token não foi corrompido durante armazenamento

  2. Verifique se está usando a mesma chave secreta (AUTH_TOKEN_SECRET) em todos os serviços


401 Unauthorized - "Credenciais inválidas"

Problema: Username ou senha incorretos (autenticação local)

Soluções: 1. Verifique se o username está correto 2. Verifique se a senha está correta 3. Verifique se o usuário existe no sistema 4. Verifique se está usando autenticação local (azure: false)


400 Bad Request - "Usuário não encontrado" (Azure AD)

Problema: Tentando fazer login externo com usuário que não existe e ECOSIF_AUTH_AUTO_PROVISION=false

Solução: Cadastre o usuário no eCosif ou habilite auto-provision (ECOSIF_AUTH_AUTO_PROVISION=true) e use POST /api/auth/external-login com id_token válido:

curl -X POST http://localhost:8080/api/auth/external-login \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "AZURE",
    "token": "<id_token>",
    "tokenType": "ID_TOKEN"
  }'

Erros de Validação

400 Bad Request - "Username é obrigatório"

Problema: Campo username não foi enviado ou está vazio

Solução:

{
  "username": "usuario@exemplo.com",  // ← Incluir este campo
  "password": "senha123",
  "azure": false
}

400 Bad Request - "Tenant é obrigatório para criação de usuário"

Problema: Tentando criar usuário via Azure AD sem fornecer tenant

Solução:

{
  "username": "usuario@empresa.com",
  "userCreate": {
    "name": "Nome",
    "username": "usuario@empresa.com",
    "tenant": "empresa-exemplo",  // ← Incluir este campo
    "active": true,
    "role": "STAFF"
  }
}

400 Bad Request - "Dados do usuário são obrigatórios para criação"

Problema: Tentando criar usuário sem fornecer userCreate

Solução: Incluir objeto userCreate quando usuário não existir:

{
  "username": "usuario@empresa.com",
  "userCreate": {  // ← Incluir este objeto
    "name": "Nome",
    "username": "usuario@empresa.com",
    "tenant": "empresa-exemplo",
    "active": true
  }
}

Erros de Usuário

401 Unauthorized - "Usuário inativo"

Problema: Usuário existe mas está inativo (active = false)

Solução: - Entre em contato com o administrador para ativar o usuário - Ou ative manualmente no banco de dados (se tiver acesso)


401 Unauthorized - "O usuário expirou"

Problema: Usuário possui data de expiração (expiryDate) no passado

Solução: - Entre em contato com o administrador para renovar a validade do usuário - Ou atualize expiryDate no banco de dados (se tiver acesso)


Erros de Requisição

404 Not Found

Problema: Endpoint não encontrado

Soluções: 1. Verifique a URL do endpoint 2. Verifique se está usando o método HTTP correto (GET, POST, etc.) 3. Verifique o context-path (padrão: /)


415 Unsupported Media Type

Problema: Header Content-Type incorreto ou ausente

Solução: Inclua o header correto:

headers: {
  'Content-Type': 'application/json'  // ← Sempre incluir para POST/PUT
}

500 Internal Server Error

Problema: Erro interno do servidor

Soluções: 1. Verifique os logs do servidor 2. Verifique se o banco de dados está acessível 3. Entre em contato com a equipe de desenvolvimento 4. Verifique se todas as variáveis de ambiente estão configuradas


Erros de Endpoint Administrativo

400 Bad Request - "Serviço não encontrado"

Problema: Serviço solicitado não está na lista de serviços permitidos

Solução: Use um dos serviços válidos: - ecosif-auth - ecosif-masterdata - ecosif-moviments - ecosif-querys - ecosif-reports - ecosif-compliance - ecosif-angular - nginx - postgres

Para listar serviços disponíveis:

curl -X GET "http://localhost:8080/api/admin/docker-logs/services" \
  -H "Authorization: Bearer $TOKEN"

401 Unauthorized - Endpoints Administrativos

Problema: Tentando acessar endpoint administrativo sem autenticação

Solução: Inclua token JWT válido:

headers: {
  'Authorization': 'Bearer ' + token  // ← Sempre incluir
}

Erros de Rede

Erro de Conexão

Problema: Não é possível conectar ao servidor

Soluções: 1. Verifique se o servidor está rodando 2. Verifique se a URL está correta 3. Verifique firewall/proxy 4. Verifique se está usando HTTPS em produção


Timeout

Problema: Requisição demora muito para responder

Soluções: 1. Aumente o timeout da requisição 2. Verifique a performance do servidor 3. Verifique conexão com banco de dados


Erros de CORS

CORS Error no Navegador

Problema: Navegador bloqueia requisição por CORS

Solução: 1. Verifique se a origem está configurada em ECOSIF_CORS 2. Em desenvolvimento, use a mesma origem ou configure CORS corretamente 3. Em produção, configure CORS para o domínio da aplicação


Checklist de Troubleshooting

Antes de reportar um problema, verifique:


Como Reportar Problemas

Ao reportar um problema, inclua:

  1. Endpoint: URL completa do endpoint
  2. Método HTTP: GET, POST, etc.
  3. Request: Body e headers da requisição (sem informações sensíveis)
  4. Response: Código de status e body da resposta
  5. Erro esperado vs. atual: O que esperava vs. o que recebeu
  6. Ambiente: Versão da API, ambiente (dev/prod), etc.
  7. Logs: Logs relevantes do servidor (se disponível)

Recursos Adicionais


Suporte

Se o problema persistir:

  1. Consulte a documentação completa em /docs
  2. Teste no Swagger UI: http://localhost:8080/swagger-ui.html
  3. Entre em contato com a equipe de desenvolvimento