Autenticacion y Seguridad
7.1 Inicio de Sesion
El acceso a la plataforma requiere tres datos:
- Tenant (Empresa): identificador unico de la empresa
- Correo electronico: direccion de correo registrada
- Contrasena: contrasena definida en el registro o modificada posteriormente
El endpoint de inicio de sesion es:
POST /api/auth/login{
"email": "usuario@empresa.com.br",
"password": "suContrasena",
"tenant": "nombre-de-la-empresa"
}7.2 Autenticacion en Dos Factores (MFA)
Para mayor seguridad, Voki soporta autenticacion en dos factores mediante TOTP (Time-based One-Time Password):
- Active el MFA en las configuraciones de su cuenta
- Escanee el codigo QR con una aplicacion autenticadora (Google Authenticator, Authy, etc.)
- En cada inicio de sesion, ademas del correo y la contrasena, se solicitara el codigo de 6 digitos del autenticador
El endpoint de verificacion MFA es:
POST /api/auth/mfa/verify7.3 Restablecimiento de Contrasena
En caso de olvidar su contrasena:
- En la pantalla de inicio de sesion, haga clic en "Olvide mi contrasena"
- Ingrese su correo electronico y tenant
- Recibira un correo electronico con un enlace para restablecer la contrasena
- El enlace es valido por tiempo limitado (expira tras su uso)
Endpoints involucrados:
POST /api/auth/forgot-password
POST /api/auth/reset-password7.4 Tokens JWT
Voki utiliza JSON Web Tokens (JWT) para autenticacion:
| Token | Validez | Uso |
|---|---|---|
| Access Token | 15 minutos | Acceso a la API y paginas autenticadas |
| Refresh Token | 7 dias | Renovacion del access token sin nuevo inicio de sesion |
El access token debe enviarse en el encabezado de cada solicitud:
Authorization: Bearer {access_token}Cuando el access token expira, utilice el refresh token para obtener uno nuevo:
POST /api/auth/refresh7.5 Aislamiento por Tenant
Cada empresa (tenant) posee su propio esquema en la base de datos PostgreSQL, garantizando aislamiento completo de los datos:
- Los datos de una empresa nunca son accesibles por otra
- Cada tenant tiene sus propias tablas, indices y registros
- El tenant se determina por el JWT y se valida en cada solicitud
- No es posible acceder a datos de otro tenant incluso con un token valido
7.6 Encabezados de Seguridad
Todas las respuestas de la plataforma incluyen encabezados de seguridad:
- HSTS: Fuerza la conexion HTTPS
- X-Frame-Options: DENY: Impide la insercion en iframes (proteccion contra clickjacking)
- X-Content-Type-Options: nosniff: Previene MIME-type sniffing
- Referrer-Policy: strict-origin-when-cross-origin: Controla la informacion de referencia
- Permissions-Policy: Restringe el acceso a APIs del navegador
7.7 Limitacion de Solicitudes (Rate Limiting)
Para proteger contra ataques de fuerza bruta y abuso:
| Endpoint | Limite |
|---|---|
Autenticacion (/api/auth/*) | 5 solicitudes por minuto |
API publica (/api/signup/*, /api/v1/call/*) | 30 solicitudes por minuto |
Al exceder el limite, la respuesta sera 429 Too Many Requests.
