2011-09-14 13 views
13

Tengo una aplicación Flask en mi red local que se conecta a un servidor de correo y servicio web. Los tres usan la misma fuente de autenticación LDAP, y me gustaría evitar que los usuarios deban proporcionar las mismas credenciales cada vez que la aplicación se conecta a una de estas interfaces.Cómo almacenar credenciales de manera segura por sesión en Flask

¿Cuál es la forma más segura de guardar las credenciales de un usuario durante la vida de la sesión para que se puedan compartir con las otras interfaces?

Una de las opciones que he encontrado es Flask-KVSession, que almacena las variables de sesión en el servidor.


Actualización: En las pruebas, que han experimentado con el abandono de las credenciales en un diccionario en app.config cuando un usuario inicia sesión en que parece que debería ser una mala idea, pero no he descubierto por qué. todavía. Sé que crea la posibilidad de que desaparezcan las credenciales de una sesión activa, pero es fácil ver si existen y solicitarlas nuevamente si no lo hacen. Además, no se escribirán en el sistema de archivos como lo harían las variables en las sesiones del lado del servidor.

Me gustaría saber si me falta algún problema obvio con este enfoque.

Respuesta

12

Definitivamente usaría algo como Flask-KVSession para almacenar las credenciales del usuario en la sesión del lado del servidor (+1 para eso - no había visto esa extensión antes). Eso asegurará que no esté pasando las credenciales del usuario hacia adelante y hacia atrás en una cookie. Añadiría Flask-Login para tratar las partes más interesantes de la gestión de sesión sin tener que descubrir todos los problemas usted mismo.

Dejar caer las credenciales en app.config no es una buena idea porque app.config no es un LocalProxyy por lo tanto no es seguro para subprocesos. No está garantizado que los cambios que realice en app.config para una solicitud serán no terminará afectando a otras solicitudes. (Puede leer más sobre context locals here y here).

+0

Gracias por la explicación. Me preocupaba que las contraseñas se guardaran con las sesiones en el servidor, pero es posible usar una tienda en memoria, por lo que ni siquiera debería ser un problema. –

+0

¿Cómo se puede usar Flask-Login en la parte superior de Flask-KVSession? –

Cuestiones relacionadas