Skip to content

Plataforma técnica · Orchestrator

Auth y Sesión API

API Autenticacion Sessions

Familia de endpoints que cubren el contrato de identidad y acceso entre Sevastopol y Orchestrator: login con 2FA opcional, validación de sesión, gestión de tenants, resolución del tenant activo, permisos por ruta y el menú dinámico que Sevastopol pinta según rol.

Estos endpoints son consumidos en su mayoría por el middleware de Sevastopol, no directamente por las islands. Excepción: POST /api/auth/login desde index.astro y POST /api/auth/logout desde el header.

FamiliaPrefijoRouterServicio responsable
Autenticación/api/authroutes/command/auth.tsAuthService
Sesiones/api/sessionsroutes/command/sessions.tsSessionService
Tenants (multi-empresa)/api/tenantroutes/command/tenant.tsTenantResolver
Bases de tenant/api/tenant-dbroutes/command/tenant-db.tsTenantDbService
Permisos por ruta/api/permissionsroutes/admin/...PermissionService
Menú dinámico/api/menuroutes/command/menu.tsMenuService

Verifica usuario y contraseña, devuelve un JWT en cookie sid (HttpOnly, Secure en producción) y datos básicos del usuario. Si el usuario tiene 2FA habilitado, la respuesta indica requires_2fa: true y la cookie no se setea hasta POST /2fa/verify.

Terminal window
curl -X POST http://localhost:8000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"$PASSWORD"}' \
-c cookies.txt

Valida la cookie sid y devuelve los datos del usuario y tenant si la sesión está vigente. Lo invoca el middleware de Sevastopol en cada navegación protegida.

Invalida la sesión y limpia la cookie sid.

MétodoRutaUso
POST/api/auth/2fa/setupGenera el secreto TOTP y QR para enrolar al usuario actual.
POST/api/auth/2fa/enableActiva 2FA tras verificar el primer código.
POST/api/auth/2fa/disableDesactiva 2FA (requiere código vigente).
POST/api/auth/2fa/verifyVerifica el código TOTP durante el login.

Lista sesiones activas del usuario actual (útil para “cerrar sesión en otros dispositivos”).

Revoca una sesión específica.

Los endpoints de tenant resuelven la empresa activa del usuario y la lista de tenants accesibles. Sevastopol los consume al cambiar de empresa desde el TenantPicker.

MétodoRutaUso
GET/api/tenantLista tenants accesibles para el usuario autenticado.
POST/api/tenantCrea un tenant nuevo (admin).
PUT/api/tenantActualiza el tenant activo del usuario.
DELETE/api/tenantDesactiva el tenant.
GET/api/tenant-dbLista bases de tenant disponibles.
DELETE/api/tenant-db/:idElimina una base de tenant (operación destructiva, admin).
Terminal window
curl -X GET http://localhost:8000/api/tenant -b cookies.txt

Devuelve el catálogo de permisos por ruta (RBAC) para el rol del usuario activo. El middleware authorizeRoute del Orchestrator usa la misma tabla para autorizar cada request.

Devuelve el árbol de navegación que Sevastopol debe pintar para el usuario actual, filtrado por permisos. Es la fuente de verdad del sidebar.

  • La cookie sid es HttpOnly y SameSite=Lax; no es legible desde JavaScript del navegador.
  • Endpoints de mutación (POST, PUT, DELETE) requieren tenant resuelto en sesión.
  • POST /api/auth/login está protegido por loginRateLimiter para mitigar fuerza bruta.
  • Para inspeccionar el flujo completo, ver Autenticación y el middleware de Sevastopol.