Tema
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) → RecursoO 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:
- Firebase Auth: cria a conta com email/senha
- 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ódigo | Significado |
|---|---|
200 | Sucesso |
201 | Recurso criado |
400 | Dados inválidos (validação falhou) |
401 | Token ausente ou inválido — faça login novamente |
403 | Perfil sem permissão para este recurso |
404 | Recurso não encontrado |
409 | Conflito — recurso já existe (ex: CNPJ duplicado) |
422 | Entidade inprocessável — regra de negócio violada |
500 | Erro interno do servidor |
Cabeçalhos obrigatórios
| Cabeçalho | Valor | Obrigatório |
|---|---|---|
Authorization | Bearer {token} | Sim (rotas protegidas) |
Content-Type | application/json | Sim (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, oerrorInterceptordo Angular redireciona automaticamente para/login - Em caso de
403, oerrorInterceptorexibe uma mensagem de "Acesso negado" sem redirecionar