Skip to content

Autenticação e Autorização

A API utiliza Firebase Auth para autenticação. Toda requisição a endpoints protegidos deve incluir um JWT Token emitido pelo Firebase.

Visão geral

Firebase Auth → JWT Token → API .NET (validação) → Recurso

O token é validado pelo Firebase Admin SDK instalado na API. A assinatura é verificada contra o issuer oficial do Firebase: https://securetoken.google.com/imobitalk-app.


Obter um token

Via HTTP (Firebase REST API)

bash
curl -X POST \
  "https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=<YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "admin@imobiliaria.com",
    "password": "senha123",
    "returnSecureToken": true
  }'

Resposta:

json
{
  "idToken": "eyJhbGciOiJSUzI1NiIs...",
  "email": "admin@imobiliaria.com",
  "refreshToken": "AFxQ4_r...",
  "expiresIn": "3600"
}

Usar o token nas requisições

Inclua o token no cabeçalho Authorization com o esquema Bearer:

bash
curl -X GET https://fastgivr-systemimob-production.up.railway.app/api/properties \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..."

Renovação automática do token

Os tokens Firebase expiram em 1 hora. No frontend, o authInterceptor sempre busca o token mais recente antes de cada requisição:

typescript
// auth.interceptor.ts
const token = await this.authService.getToken(); // chama getIdToken() internamente
req = req.clone({
  headers: req.headers.set('Authorization', `Bearer ${token}`)
});

Registro de usuário

O registro é feito em duas etapas:

  1. Firebase Auth: cria a conta com email/senha
  2. API .NET: cria o registro do usuário no banco, vinculado ao UID Firebase
bash
POST /api/auth/register
Content-Type: application/json

{
  "firebaseUid": "uid_do_firebase",
  "email": "usuario@imobiliaria.com",
  "name": "Nome do Usuário",
  "role": "Broker",
  "companyId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Códigos de retorno

CódigoSignificado
200Sucesso
201Recurso criado
400Dados inválidos (validação falhou)
401Token ausente ou inválido — faça login novamente
403Perfil sem permissão para este recurso
404Recurso não encontrado
409Conflito — recurso já existe (ex: CNPJ duplicado)
422Entidade inprocessável — regra de negócio violada
500Erro interno do servidor

Cabeçalhos obrigatórios

CabeçalhoValorObrigatório
AuthorizationBearer {token}Sim (rotas protegidas)
Content-Typeapplication/jsonSim (requisições com body)

Variável de ambiente para testes

Para testes com Scalar ou qualquer cliente HTTP, configure a variável de ambiente com o token:

Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6...

A documentação interativa da API está disponível em:

  • Desenvolvimento: http://localhost:5028/scalar
  • Produção: https://fastgivr-systemimob-production.up.railway.app/scalar

Segurança

  • Tokens têm validade de 1 hora
  • O Firebase gerencia a renovação via Refresh Token (validade longa)
  • Em caso de 401, o errorInterceptor do Angular redireciona automaticamente para /login
  • Em caso de 403, o errorInterceptor exibe uma mensagem de "Acesso negado" sem redirecionar

Documentação do FastGivr SystemImob