Autenticación JWT
El sistema utiliza JSON Web Tokens (JWT) para autenticación. Cada token contiene información del usuario codificada y firmada, permitiendo autenticación stateless.Obtener tokens
Para autenticarse, envíe credenciales al endpoint de tokens:El token
access es de corta duración (generalmente 15-60 minutos). El token refresh es de larga duración (generalmente 1-7 días) y se usa para obtener nuevos access tokens.Validación personalizada
El sistema implementa validación personalizada enCustomTokenObtainPairView:
- 404: El correo no existe en el sistema
- 401: La contraseña es incorrecta
Refrescar tokens
Cuando el access token expira, use el refresh token para obtener uno nuevo:Usar tokens en peticiones
Incluya el access token en el headerAuthorization de todas las peticiones:
Implementación en frontend
En Angular, configure un interceptor para agregar el token automáticamente:Protección de endpoints
Todos los endpoints (excepto/api/token/) requieren autenticación:
Control de acceso basado en roles
Además de autenticación, el sistema implementa autorización mediante roles. El decorador@permiso_requerido valida permisos:
Seguridad en producción
Secret key
Genere una clave secreta única:Configuración HTTPS
CORS
Limite los orígenes permitidos:Duración de tokens
Ajuste la duración de tokens según sus necesidades de seguridad:¿Qué significa ROTATE_REFRESH_TOKENS?
¿Qué significa ROTATE_REFRESH_TOKENS?
Cuando está habilitado, cada vez que usa un refresh token para obtener un nuevo access token, también recibe un nuevo refresh token. El refresh token anterior se invalida (si
BLACKLIST_AFTER_ROTATION es True).Esto mejora la seguridad, especialmente si un refresh token es comprometido.Mejores prácticas
Almacenamiento seguro de tokens
En el frontend, almacene tokens en
localStorage o sessionStorage, no en cookies accesibles por JavaScript si no usa httpOnly.Solución de problemas
Error: “Token is invalid or expired”
Causa: El access token expiró. Solución: Use el refresh token para obtener un nuevo access token mediante/api/token/refresh/.
Error: “Authentication credentials were not provided”
Causa: No se incluyó el headerAuthorization o está mal formado.
Solución: Asegúrese de incluir Authorization: Bearer <token> en todas las peticiones.
Error: “Correo no encontrado”
Causa: El email no existe en la base de datos. Solución: Verifique el email o registre un nuevo usuario.Error: “Contraseña incorrecta”
Causa: La contraseña no coincide. Solución: Verifique la contraseña o use la funcionalidad de recuperación de contraseña.Recursos adicionales
API de autenticación
Documentación completa de endpoints de autenticación
Roles y permisos
Entienda el sistema de roles del sistema