Multi-Tenancy (API)
Console aplica multi-tenancy a través de tokens JWT y filtrado automático de datos.
Contexto del Tenant en JWT
Cada token JWT contiene el company_id, que identifica al tenant (organización cliente):
{
"sub": "user_id",
"user_id": "507f1f77bcf86cd799439011",
"company_id": "507f1f77bcf86cd799439012",
"email": "[email protected]",
"is_owner": false,
"token_type": "access"
}
Aislamiento de Datos
Todas las solicitudes a la API filtran automáticamente por company_id del JWT:
// Tu solicitud:
GET /v1/users
// La API internamente consulta:
db.users.find({ company_id: jwt.company_id })
No puedes acceder a datos de otras compañías, incluso con IDs válidos.
Protección Entre Compañías
Si intentas acceder a un recurso de otra compañía:
GET /v1/users/507f1f77bcf86cd799439099
# El usuario pertenece a company_id: XXXXXXX
# Respuesta: 404 Not Found
# (Aunque el usuario existe, no está en tu compañía)
Esto aplica a todos los recursos:
- Usuarios
- Grupos
- Permisos
- Configuraciones
- Cualquier dato con alcance de compañía
Cómo Funciona
- Autenticación: El usuario inicia sesión con slug de compañía y credenciales
- Generación de JWT: La API crea un JWT con
company_id - Procesamiento de Solicitudes: Cada llamada a la API incluye el JWT en el header Authorization
- Filtrado Automático: El middleware de la API extrae
company_idy filtra todas las consultas - Aislamiento Aplicado: Los usuarios solo pueden ver y modificar datos de su compañía
Mejores Prácticas
1. Siempre Incluye el Header de Authorization
curl -H "Authorization: Bearer <your_jwt_token>" \
https://api.console.solucao42.com.br/v1/users
2. No Codifiques Company IDs
El company_id se extrae automáticamente del JWT. Nunca intentes sobrescribirlo en tus solicitudes.
// ❌ MAL: Intentando especificar company_id
POST /v1/users
{
"email": "[email protected]",
"company_id": "some-other-company" // Esto será ignorado/rechazado
}
// ✅ BIEN: Deja que la API maneje company_id
POST /v1/users
{
"email": "[email protected]"
// company_id se establece automáticamente desde el JWT
}
3. Maneja Errores 404 Correctamente
Una respuesta 404 puede significar:
- El recurso no existe
- El recurso existe pero pertenece a otra compañía
Ambos casos deben tratarse igual: el recurso no es accesible.
Garantías de Seguridad
Console proporciona:
- Aislamiento automático: Todas las consultas se filtran por company_id
- Sin acceso entre tenants: No se puede acceder a datos de otras compañías
- Aplicación en middleware: El aislamiento se aplica en la capa de API
- Filtrado a nivel de base de datos: Todas las consultas incluyen filtro de company_id
Para Usuarios del Producto
Aprende sobre conceptos de multi-tenancy en la interfaz: Guía de Multi-Tenancy.