Seguridad y permisos
Arquitectura de seguridad de Aidoo: autenticación OAuth y por clave API, control de acceso por rol, cifrado de credenciales y registro de actividad.
8 min de lecturaActualizado el 1 de octubre de 2026
Arquitectura de seguridad
Aidoo aplica un enfoque de seguridad en profundidad. Cada petición MCP pasa por el backend Express, que se encarga de la autenticación, el control de acceso, el cifrado y el registro antes de llegar a Odoo.
Autenticación
Aidoo propone tres métodos de autenticación según el contexto de uso.
OAuth 2.1 (Claude.ai, ChatGPT, Claude Desktop, Claude Code, recomendado)
Para los clientes que soportan OAuth (Claude.ai, ChatGPT, Claude Desktop, Claude Code), la autenticación se gestiona mediante un flujo OAuth 2.1 estándar:
- Ninguna clave API que manipular del lado del usuario, así que ningún secreto que filtrar
- La conexión se renueva automáticamente: un conector usado con regularidad no necesita volver a conectarse
- La autorización está limitada a una empresa: el usuario selecciona explícitamente qué organización Aidoo autoriza
- Los permisos se eligen en la pantalla de consentimiento, con un conjunto propio opcional para la pre-producción
- La revocación es inmediata desde la página Claves API del panel
Es el método por defecto recomendado para la mayoría de los usuarios. Consulta las guías Conectarse con Claude y Conectarse con ChatGPT.
Claves API (IDEs sin OAuth)
Para los IDEs que no soportan OAuth (Cursor, Windsurf, etc.), las claves API autentican las peticiones programáticas. Cada clave:
- Se hashea con SHA-256 antes de almacenarse (la clave en claro nunca se guarda)
- Lleva un prefijo
aid_live_para una identificación rápida - Está vinculada a un usuario y a una empresa, con una clave activa por miembro y por espacio
- Puede revocarse instantáneamente desde el panel
Consulta las guías Claves API y Clientes locales para una gestión completa.
JWT (sesiones del panel)
Las sesiones del panel web utilizan tokens JWT:
- Access token: vida útil de 15 minutos
- Refresh token: vida útil de 30 días, transmitido mediante una cookie httpOnly segura
- La renovación es automática y transparente para el usuario
Autenticación de dos factores (TOTP)
Cada usuario puede proteger su cuenta con un código temporal generado por una aplicación de autenticación (Google Authenticator, Microsoft Authenticator, 1Password, etc.). La opción es voluntaria y se configura cuenta por cuenta.
- Abre Ajustes, sección Autenticación de dos factores, y haz clic en Activar
- Si tu cuenta tiene contraseña, introdúcela para confirmar tu identidad
- Escanea el código QR con tu aplicación (o introduce la clave mostrada)
- Introduce el código de 6 cifras para confirmar la activación
- Guarda los 8 códigos de recuperación mostrados: cada uno solo sirve una vez y no volverán a mostrarse
A partir de ahí, el código se pide en cada nuevo inicio de sesión en el panel, tanto con contraseña como con Google. Dispones de 5 minutos y 5 intentos; después, hay que volver a iniciar sesión. Si pierdes el teléfono, haz clic en «Usar un código de recuperación».
Lo que la activación no cambia:
- las sesiones ya abiertas siguen siendo válidas: nadie queda desconectado;
- las claves API y las conexiones OAuth de tus asistentes (Claude, ChatGPT, IDEs) siguen funcionando sin código;
- el chat integrado en Odoo y los agentes no se ven afectados.
Desactivar la opción o generar nuevos códigos de recuperación (botón «Nuevos códigos de recuperación», que invalida los anteriores) requiere un código de la aplicación, y la contraseña en las cuentas que la tienen.
Roles y control de acceso
Aidoo utiliza un sistema de roles a tres niveles, aplicado por empresa. Un mismo usuario puede tener roles distintos según la empresa.
| Rol | Alcance |
|---|---|
| Owner | Control total: gestión de la empresa, los miembros, las claves API, la facturación y la conexión Odoo |
| Admin | Administración: gestión de los miembros y de sus claves API, límites de créditos IA, acceso a todos los logs, configuración de Odoo |
| Member | Acceso limitado: consulta y revocación de sus propias claves API, consulta de sus propios logs |
Por defecto, un miembro elige él mismo los permisos de su conector. La opción Miembros en solo lectura de los Ajustes lo limita a la lectura (ver Claves API).
El rol Owner es único por espacio y puede transmitirse a otro miembro desde la página Equipo, tras confirmación por email (ver Facturación y gestión del espacio).
Ejemplos concretos
| Acción | Owner | Admin | Member |
|---|---|---|---|
| Conectar su asistente por OAuth | Sí | Sí | Sí |
| Generar o modificar la clave API de un miembro | Sí | Sí | No |
| Revocar la clave de otro miembro | Sí | Sí | No |
| Consultar todos los logs | Sí | Sí | No |
| Modificar la conexión Odoo, bloquear modelos y campos | Sí | Sí | No |
| Invitar o retirar a un miembro | Sí | Sí | No |
| Fijar el límite mensual de créditos IA de un miembro | Sí | Sí | No |
| Actualizar los hints a través del asistente (por defecto) | Sí | Sí | No |
| Gestionar la facturación | Sí | No | No |
| Transferir la propiedad, eliminar el espacio | Sí | No | No |
El límite de créditos IA por miembro se configura desde la página Equipo, ver Créditos y consumo.
Aislamiento multi-tenant
Cada petición está limitada a una empresa. Un usuario solo puede acceder a los recursos de las empresas a las que pertenece.
Bloquear modelos y campos
Con independencia de los permisos de las claves, los owners y admins pueden cerrar partes enteras de la base desde la página Configuración Odoo:
- Bloquear este modelo: ya no es posible ninguna consulta sobre el modelo, sea cual sea la herramienta;
- Bloquear este campo: el campo se retira de las lecturas y se ignora en las escrituras.
Estos bloqueos se aplican a todas las claves, incluidas las de los agentes y del chat integrado en Odoo. El filtro «Bloqueados» de la página lista lo que está cerrado, y «Desbloquear todo» reabre los modelos de una vez.
Cifrado de credenciales Odoo
Las credenciales de conexión Odoo (URL, base de datos, contraseña) se cifran en reposo en la base de datos.
Algoritmo
- AES-256-GCM (Galois/Counter Mode): cifrado autenticado que garantiza a la vez la confidencialidad y la integridad de los datos
- Vector de inicialización (IV): 16 bytes aleatorios generados para cada operación de cifrado
- Tag de autenticación: 16 bytes para detectar cualquier alteración de los datos cifrados
Funcionamiento
- Al guardar una conexión Odoo, las credenciales sensibles se cifran del lado del servidor
- El resultado se almacena en formato
IV:TAG:CIPHERTEXT(hexadecimal) - En cada petición a Odoo, las credenciales se descifran en memoria durante la duración de la llamada
- La clave de cifrado es una variable de entorno del servidor, jamás expuesta del lado del cliente
Las credenciales Odoo nunca circulan en claro entre el navegador y el servidor MCP. Solo el backend dispone de la clave de descifrado.
Registro de las peticiones
Cada llamada MCP se registra con un nivel de detalle que permite una auditoría completa.
Datos registrados
| Campo | Descripción |
|---|---|
| Herramienta MCP | Nombre de la herramienta llamada (query, read, create, etc.) |
| Parámetros | Datos de entrada de la petición |
| Resultado | Datos de salida (éxito) o mensaje de error |
| Estado | success, error o timeout |
| Duración | Tiempo de ejecución en milisegundos |
| Usuario | Identidad del usuario y clave API utilizada |
| Sesión | Identificador de sesión para agrupar llamadas relacionadas |
Retención de los datos
La duración de conservación se configura por espacio en Ajustes, pestaña Odoo y logs, sección Logs de solicitudes: 7, 14, 30, 90, 180 o 365 días (14 días por defecto). Pasado ese plazo, los logs se eliminan automáticamente, y reducir la duración elimina de inmediato los logs más antiguos.
La misma sección permite desactivar por completo la recogida detallada, o solo para algunas herramientas («Ajustes avanzados»). Las estadísticas y las cuotas siguen activas en todos los casos. Estos ajustes están reservados a los owners y admins.
Filtrado y consulta
Desde la página Logs del panel, puedes filtrar por:
- Herramienta MCP utilizada
- Estado de la petición (éxito, error, timeout)
- Entorno (producción o pre-producción)
- Rango de fechas
Los owners y admins consultan todos los logs de la empresa. Los members solo ven sus propias peticiones.
Siguiente paso
- Claves API: crear una clave, elegir sus permisos y revocarla
- Reglas y permisos: acotar lo que un agente puede tocar