Guardar la contraseña del nombre de usuario encriptado en la sesión

1

Tengo un servidor Node.js que sirve una aplicación. En esa aplicación se le puede pedir que inicie sesión. Las credenciales de inicio de sesión se autenticarían en LDAP.

Ese servidor podría solicitar / publicar datos de otros servidores a través de REST. Esos puntos finales tranquilos podrían protegerse con autenticación básica contra el mismo servidor LDAP.

¿Es seguro cifrar <username>:<password> y almacenarlo en la sesión en el servidor Node.js y, a petición, descifrar esas credenciales y pasarlas en el valor del encabezado de Autenticación básica al punto final de descanso?

La clave de cifrado se creará aleatoriamente para esa sesión y luego se destruirá al final de la sesión. Las credenciales solo se conservan durante el período de una sesión.

    
pregunta user3018765 21.01.2016 - 16:21
fuente

1 respuesta

4

Desde un punto de vista estrictamente de seguridad, puede hacerlo de esta manera, pero no es lo ideal. A pesar de que las credenciales solo se almacenan temporalmente en el servidor (y tal vez se configuran para que solo se almacenen en la memoria), el hecho de que estén allí por más tiempo de lo que posiblemente deben ser un riesgo, aunque sea pequeño. Tenga en cuenta que el cifrado de las credenciales en la sesión probablemente no le ayude mucho, ya que el servidor debe poder acceder a su clave para descifrar. Para que alguien pueda leer una sesión no encriptada, necesitarían controlar el servidor y, si lo hicieran, también podrían leer una sesión encriptada, por lo que cifrarlo es un poco más molesto para el atacante. Dicho esto, preferiría una de estas opciones:

  1. Si tanto la aplicación web como las aplicaciones de descanso están usando las mismas credenciales de LDAP, debería haber una manera de configurar el resto de aplicaciones para que puedan compartir el mismo token que la aplicación web está utilizando para autenticar al usuario con cada solicitud Si puede lograrlo, no necesitará almacenar nada en la sesión, ya que la aplicación web podría pasar el token que recibió con cada solicitud.

  2. Un enfoque más simple sería que su servidor web tenga su propio conjunto de credenciales (tipo administrador) para acceder a las demás aplicaciones, y se autenticará de forma independiente para recopilar los datos que necesita para el usuario. Tal vez mediante la consulta por un usuario en particular. Por supuesto, esto supone que los servicios de descanso pueden proporcionar esta funcionalidad.

respondido por el TTT 21.01.2016 - 18:58
fuente

Lea otras preguntas en las etiquetas