Documentation Index
Fetch the complete documentation index at: https://woku.app/docs/llms.txt
Use this file to discover all available pages before exploring further.
Inicio de sesión
Los usuarios inician sesión enadmin.woku.app/login con su email (o
usuario) + contraseña. La contraseña se compara contra un hash
bcrypt; la contraseña en plano nunca se almacena ni se transmite más
allá del propio formulario.
Un inicio de sesión exitoso genera:
- Un access token (JWT firmado) que el cliente adjunta como
Authorization: Bearer <token>en cada request. - Un refresh token opaco (32 bytes aleatorios, single-use) con validez de 30 días.
- Una Session persistida del lado del servidor que liga el token a un usuario y permite revocarlo o expirarlo.
Idle timeout
Cada request autenticado refresca el campolastActivity de la
sesión (debounced cada 60 segundos para no saturar la base). Si la
sesión queda sin actividad por más del tiempo configurado, se cierra
automáticamente: el siguiente request recibe 401 Unauthorized y el
usuario debe iniciar sesión de nuevo.
- Default: 30 minutos de inactividad → cierre.
- Override per-sesión: opcional, vía el campo
idleTimeoutMinde la sesión. - Override global: variable de entorno
SESSION_IDLE_TIMEOUT_MIN.
isClosed: true en la sesión, de
modo que un atacante con el token robado tampoco puede usarlo.
Refresh tokens (rotación single-use)
Cuando el cliente quiere prolongar la sesión sin pedirle al usuario que ingrese sus credenciales nuevamente, envía su refresh token actual al servicio de autenticación. El servidor:- Verifica que el refresh exista, no esté cerrado, y no esté vencido.
- Genera un nuevo par (access + refresh) y invalida el viejo
atómicamente en la misma fila
Session. - Devuelve el par nuevo.
401 Unauthorized y el usuario debe iniciar sesión otra vez.
Logout
Al cerrar sesión, esta se marca como cerrada (isClosed: true). A
partir de ahí, ningún request con ese access ni con su refresh
funciona.
Garantías
- Tokens nunca aparecen en la URL: solo van por header o body, y TLS los protege en tránsito (ver Headers y CSP para HSTS).
- Revocación inmediata: el admin puede revocar cualquier sesión desde el endpoint backoffice; el siguiente request del token revocado falla.
- Compatibilidad: el flujo con solo access token sigue funcionando para clientes que no implementan refresh (la rotación es opt-in).