Summary
Una vez que un usuario inicia sesión en un sitio web y se verifican sus credenciales de nombre de usuario / contraseña y se establece una sesión activa, ¿es posible evitar golpear la base de datos para cada solicitud de ese usuario? ¿Cuál es el método recomendado para autenticar de forma segura las solicitudes posteriores durante la vida de la sesión, al tiempo que minimiza las consultas de base de datos y otro tráfico interno de la red?
Background
En una arquitectura de servidor de aplicaciones web sin estado, donde cada solicitud no tiene conocimiento de ninguna actividad previa del usuario, sería necesario consultar el DB en cada una de las solicitudes de ese usuario (por lo general, consultando el ID de sesión almacenado en una cookie y se transfiere en el encabezado de la solicitud). Pero, ¿qué sucede si se cifró y almacenó cierta información básica en esa cookie de sesión que tenía suficiente información para validar al usuario para solicitudes no confidenciales y no editables? Para tales solicitudes, podría, como ejemplo, cifrar y almacenar la ID de usuario y algo que identifique de forma única su máquina tanto como sea posible (usuario-agente + dirección IP) en los datos de la sesión. La clave utilizada para cifrar los datos podría cambiar diariamente, lo que dificultaría que cualquier pirata informático clonara los datos de la sesión en una máquina diferente. Cuando la sesión expire, deberá validar completamente las credenciales del usuario. El hecho es que la mayor amenaza para piratear la sesión de un usuario sería que alguien utilice la computadora de un usuario que él o ella dejaron desatendido. ¿No debería preocuparme por esto y permitir que un cierto nivel de almacenamiento en caché entre los servidores de aplicaciones web y la base de datos se encargue de acelerar el proceso de autenticación? Si bien puede parecer una optimización innecesaria, parece un candidato maduro para mejoras en la eficiencia, ya que cada solicitud requiere este proceso. Gracias por cualquier sugerencia!