Cómo almacenar en caché las credenciales de autenticación para acelerar la autenticación

1

Estoy desarrollando una API REST que requiere un HTTP basic auth para acceder. Las API están escritas en Django, y la autenticación se basa en el middleware de autenticación Django que es: comprueba la base de datos, el nombre de usuario y la contraseña. La contraseña se almacena con el pbkdf2 .

Como puede imaginar, cada solicitud lleva tiempo, ya que está llegando a la base de datos (incluso con encuestas y demás). Por lo tanto, pensé en cache (usando memcache) las credenciales para verificarlas antes de preguntar al DB. La idea es derivar una clave basada en los datos de BasicAuth enviados de tal forma que pueda consultar la memoria caché y recuperar la información del usuario.

Hasta ahora se me ocurrieron algunas ideas. Tengo la cadena base64 basicauth y puedo:

  1. Use el valor como es clave para el memcache.
  2. Use un SHA1 para codificar la cadena base64 y use eso.
  3. Derive Username:Password y como clave use el pbkdf2(p,u,iterations) donde cifro la contraseña usando el nombre de usuario como salt. Aquí, debo tener cuidado con las iteraciones, de lo contrario puede requerir demasiado tiempo. Empíricamente las iteraciones son < 100 para que sea lo suficientemente rápido, lo que suena un poco demasiado bajo.

Incluso aunque la memoria caché es volátil ( 120s ), la mejor solución (en términos de intercambio entre seguridad y velocidad) es la número 3 para mí. Cualquier entrada ¿O puedo asumir que la memoria caché es lo suficientemente segura y puedo usar el número 1 o 2, incluso si están lejos de estar seguros?

¿Alguien que tenga una solución mejor / más inteligente?

    
pregunta EsseTi 21.02.2017 - 17:23
fuente

0 respuestas

Lea otras preguntas en las etiquetas