Fundamentos de la autenticación basada en sesiones
40 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál es el principal desafío que presenta el protocolo HTTP en la autenticación web tradicional?

  • La dificultad para establecer una conexión segura entre el cliente y el servidor.
  • La ausencia de un mecanismo para recordar la identidad del usuario entre peticiones. (correct)
  • La incompatibilidad con los navegadores web modernos.
  • La imposibilidad de almacenar información del usuario en el servidor.

¿Qué componente se introduce en la comunicación cliente-servidor para implementar la autenticación basada en sesiones?

  • Un token de acceso único.
  • Una sesión. (correct)
  • Una cookie cifrada.
  • Un certificado digital.

¿Cuál de las siguientes acciones NO forma parte del ciclo de vida típico de una sesión web?

  • Inicio automático al acceder a una web.
  • Validación del usuario mediante credenciales.
  • Almacenamiento de datos del usuario en el cliente. (correct)
  • Cierre manual o automático al cerrar el navegador.

En un sistema de autenticación basado en sesiones, ¿qué información se guarda típicamente en la sesión después de que un usuario se autentica exitosamente?

<p>El nick o login del usuario y su rol. (A)</p> Signup and view all the answers

¿Qué rol juega el servidor en la autenticación basada en sesiones durante las peticiones sucesivas de un usuario?

<p>Comprueba la sesión para determinar la identidad y los permisos del usuario. (B)</p> Signup and view all the answers

¿Cuál es el propósito principal de cerrar la sesión (logout) en una aplicación web que utiliza autenticación basada en sesiones?

<p>Borrar los datos del usuario almacenados en la sesión. (D)</p> Signup and view all the answers

En un escenario donde un usuario accede a una web y luego intenta acceder a una zona restringida, ¿qué paso es esencial para que la aplicación permita el acceso?

<p>Validar las credenciales del usuario contra la base de datos. (A)</p> Signup and view all the answers

¿Cuál es el propósito principal del middleware express-session en una aplicación Express?

<p>Validar si un usuario ha sido autenticado antes de permitirle el acceso a ciertos recursos. (B)</p> Signup and view all the answers

¿Cómo influye la autenticación basada en sesiones en la experiencia del usuario al navegar por un sitio web?

<p>Permite al usuario acceder a diferentes áreas del sitio sin autenticarse repetidamente durante la misma sesión. (A)</p> Signup and view all the answers

¿Qué función cumple el parámetro secret en la configuración de express-session?

<p>Proporciona una clave de cifrado utilizada para proteger la información de la sesión al enviarla entre el cliente y el servidor. (B)</p> Signup and view all the answers

¿Cuál es el efecto de establecer el parámetro resave en true en la configuración de express-session?

<p>Guarda la sesión en el almacenamiento cada vez que se realiza una petición, renovando así el tiempo de caducidad. (D)</p> Signup and view all the answers

¿En qué situación sería apropiado establecer el parámetro saveUninitialized en true en la configuración de express-session?

<p>Cuando se requiere almacenar datos de usuarios que aún no se han validado, como información de un carrito de compras antes del inicio de sesión. (C)</p> Signup and view all the answers

¿Por qué es crucial configurar el middleware de sesión antes de definir los enrutadores en una aplicación Express?

<p>Para que el middleware de sesión se aplique antes de que se procesen las rutas, permitiendo la autenticación y autorización previas. (C)</p> Signup and view all the answers

En el contexto de la autenticación con express-session, ¿qué paso precede inmediatamente al permitir el acceso a un usuario a una parte protegida de la aplicación?

<p>La validación de las credenciales del usuario comparándolas con una base de datos. (A)</p> Signup and view all the answers

¿Qué vulnerabilidad de seguridad mitiga principalmente el uso de una clave secret robusta en la configuración de express-session?

<p>Manipulación de sesiones mediante la predicción o el robo del identificador de sesión. (A)</p> Signup and view all the answers

Si una aplicación Express establece resave: false y un usuario visita repetidamente la misma página sin modificar su sesión, ¿qué ocurrirá con la sesión en el servidor?

<p>La sesión solo se guardará en el almacenamiento si ha sido modificada. (B)</p> Signup and view all the answers

¿Qué método HTTP se utiliza comúnmente para recibir las credenciales de un usuario durante el proceso de inicio de sesión?

<p>POST (D)</p> Signup and view all the answers

En el contexto del código proporcionado, ¿qué ocurrirá si las credenciales proporcionadas por el usuario no coinciden con ninguna entrada en el array usuarios?

<p>Se renderizará la vista 'login' con un mensaje de error. (C)</p> Signup and view all the answers

¿Cuál es el propósito principal de la función middleware de autenticación en una aplicación Node.js?

<p>Verificar si un usuario ha iniciado sesión antes de permitir el acceso a ciertas rutas. (B)</p> Signup and view all the answers

En el código proporcionado, ¿cómo se aplica el middleware de autenticación a una ruta específica?

<p>Se pasa como segundo parámetro en la llamada a <code>app.get()</code>, <code>app.post()</code>, etc. (B)</p> Signup and view all the answers

Si la función middleware autenticacion detecta que no hay un usuario en sesión, ¿qué acción realizará?

<p>Renderizará la vista 'login'. (D)</p> Signup and view all the answers

Considerando el código req.session.usuario = existeUsuario.usuario;, ¿qué tipo de dato se está almacenando en la sesión del usuario?

<p>El nombre de usuario. (B)</p> Signup and view all the answers

¿Qué implicación tiene el uso de res.render('index') dentro del bloque if (existeUsuario.length > 0)?

<p>Renderiza la vista 'index' para usuarios autenticados. (B)</p> Signup and view all the answers

Si quisieras permitir acceso a la ruta /protegido solo a usuarios con el rol de 'administrador', ¿cómo modificarías el middleware autenticacion para verificar el rol del usuario?

<p>Crear un nuevo middleware específico para administradores y aplicarlo a la ruta. (A)</p> Signup and view all the answers

¿Cuál es el propósito principal de almacenar el rol de un usuario en la sesión después de la validación de credenciales?

<p>Controlar el acceso a diferentes recursos y funcionalidades según el rol del usuario. (D)</p> Signup and view all the answers

¿Qué se necesita para crear un middleware que requiera parámetros adicionales, además de req, res y next?

<p>Definir una función que reciba los parámetros y devuelva la función middleware con <code>req</code>, <code>res</code> y <code>next</code>. (B)</p> Signup and view all the answers

En el contexto de la autenticación basada en sesiones, ¿qué acción representa el cierre de sesión ('logout')?

<p>La invalidación de la información del usuario almacenada en la sesión del servidor. (B)</p> Signup and view all the answers

¿Cómo se aplican múltiples middlewares a una ruta en Node.js?

<p>Pasándolos uno tras otro, separados por comas, en la definición de la ruta. (B)</p> Signup and view all the answers

Considerando el siguiente código app.get('/protegidoAdmin', autenticacion, rol('admin'), (req, res) => { res.render('protegido_admin'); }), ¿qué función realiza el middleware rol('admin')?

<p>Verificar que el usuario autenticado tenga el rol de administrador para acceder a la ruta. (D)</p> Signup and view all the answers

Si un usuario intenta acceder a la ruta /protegidoAdmin sin tener el rol de 'admin', utilizando el middleware rol proporcionado, ¿qué ocurrirá?

<p>Se le redirigirá a la página de login. (B)</p> Signup and view all the answers

En el contexto del código proporcionado, si req.session.rol es indefinido o nulo, y se intenta acceder a una ruta protegida por el middleware rol('admin'), ¿cuál será el resultado?

<p>El middleware tratará al usuario como si no tuviera el rol correcto y lo redirigirá a la página de login. (C)</p> Signup and view all the answers

¿Cuál es el propósito del siguiente bloque de código?

let rol = (rol) => { return (req, res, next) => { if (rol === req.session.rol) next(); else res.render('login'); } }

<p>Crea un middleware para verificar si un usuario tiene un rol específico antes de permitir el acceso a una ruta. (D)</p> Signup and view all the answers

¿Cuál es el propósito principal del middleware que asocia la sesión con los recursos de la vista, como se describe en el texto?

<p>Para permitir el acceso a la información de la sesión desde las plantillas de las vistas. (B)</p> Signup and view all the answers

En el contexto de la gestión de sesiones en Node.js con express-session, ¿qué significa el atributo resave?

<p>Determina si la sesión debe guardarse nuevamente en el almacenamiento, incluso si no ha sido modificada. (A)</p> Signup and view all the answers

¿Qué ocurre al llamar al método req.session.destroy() dentro de una ruta en Node.js?

<p>Elimina los datos de la sesión actual del usuario. (C)</p> Signup and view all the answers

¿Cuál es la diferencia clave entre usar expires y maxAge al establecer el tiempo de vida de una sesión en express-session?

<p><code>expires</code> establece una fecha de caducidad absoluta, mientras que <code>maxAge</code> establece un período de tiempo relativo desde el momento actual. (B)</p> Signup and view all the answers

¿En qué orden deben definirse el middleware de sesión y el middleware para acceder a la sesión desde las vistas en una aplicación Node.js con express-session?

<p>Primero el middleware de sesión, luego el middleware para acceder a la sesión desde las vistas, y antes de los enrutadores. (C)</p> Signup and view all the answers

Si deseas configurar una sesión que expire después de 1 hora, ¿cómo configurarías el atributo expires utilizando Date.now()?

<p><code>expires: new Date(Date.now() + (60 * 60 * 1000))</code> (C)</p> Signup and view all the answers

¿Cuál es el propósito del atributo saveUninitialized en la configuración de express-session?

<p>Determina si se debe guardar una sesión que es nueva pero aún no ha sido modificada. (A)</p> Signup and view all the answers

Dentro de una plantilla de vista, ¿cómo se puede verificar si un usuario ha iniciado sesión utilizando la variable session definida en res.locals?

<p><code>{% if (session and session.usuario) %}</code> (B)</p> Signup and view all the answers

Flashcards

Array de usuarios

Array que contiene objetos con nombres de usuario y contraseñas.

Ruta '/login'

Ruta que recibe las credenciales del usuario y las verifica contra el array de usuarios.

req.session.usuario

Variable que almacena el nombre de usuario durante la sesión.

Middleware de autenticación

Función que verifica si un usuario ha iniciado sesión antes de permitir el acceso a una ruta.

Signup and view all the flashcards

Aplicar middleware

Uso del middleware de autenticación en una ruta específica.

Signup and view all the flashcards

Acceso no autorizado

Redirige al usuario a la página de login si no está autenticado.

Signup and view all the flashcards

Validar credenciales

Comprobar si existe el usuario y contraseña en la lista de usuarios.

Signup and view all the flashcards

Definición de roles

Control de acceso basado en la función o categoría del usuario (ej. admin, usuario normal).

Signup and view all the flashcards

Ruta de logout

Ruta en la aplicación que destruye los datos de sesión del usuario y redirige a otra página.

Signup and view all the flashcards

Middleware de sesión en vistas

Middleware que asocia la sesión con los recursos de la vista, permitiendo acceder a la sesión desde las plantillas.

Signup and view all the flashcards

Acceso a la sesión en vistas

La variable session está disponible en las vistas a través de res.locals.

Signup and view all the flashcards

Tiempo de vida de la sesión

Atributos expires o maxAge en la configuración de la sesión.

Signup and view all the flashcards

Unidades del tiempo de vida

Se especifica en milisegundos, generalmente usando Date.now() para calcular el tiempo de expiración desde el momento actual.

Signup and view all the flashcards

Orden de los middlewares

Middleware que configura la sesión debe ir antes que los enrutadores.

Signup and view all the flashcards

Función de la ruta '/logout'

Para cerrar la sesión del usuario y redirigirlo a la página principal.

Signup and view all the flashcards

Pasos para usar sesiones

Instalar el middleware express-session y configurarlo.

Signup and view all the flashcards

¿Qué es la autenticación basada en sesiones?

Mecanismo para autenticar usuarios en aplicaciones web basadas en navegadores y recordar su validación en visitas sucesivas.

Signup and view all the flashcards

¿Qué comprende una sesión web?

Conjunto de interacciones de un cliente con un servidor durante un período determinado.

Signup and view all the flashcards

¿Qué es un protocolo sin estado como HTTP?

El protocolo HTTP no guarda información entre peticiones consecutivas.

Signup and view all the flashcards

¿Qué añade la seguridad basada en sesiones?

Añade un elemento a la comunicación cliente-servidor para almacenar información del cliente.

Signup and view all the flashcards

¿Cuándo se pide validación en una web?

Para zonas restringidas, la aplicación pide validación (login y password).

Signup and view all the flashcards

¿Qué datos se almacenan en la sesión tras la validación?

Nick o login, y el perfil de usuario (rol: administrador, editor, visitante, etc.).

Signup and view all the flashcards

¿Qué comprueba el servidor en cada nueva petición?

Comprobar en la sesión quiénes somos y qué rol tenemos.

Signup and view all the flashcards

¿Qué ocurre al cerrar la sesión?

Cerrar la sesión (logout) borra los datos guardados de la visita.

Signup and view all the flashcards

Almacenar el rol del usuario

Almacenamiento del rol del usuario en la sesión tras la validación de credenciales.

Signup and view all the flashcards

Función middleware de rol

Una función que comprueba si el rol del usuario en la sesión coincide con el rol requerido para acceder a un recurso.

Signup and view all the flashcards

Middleware con parámetros adicionales

Es una función que necesita parámetros adicionales (como el rol) además de req, res, next y devuelve internamente la función middleware.

Signup and view all the flashcards

Aplicar múltiples middlewares

Se pasan uno tras otro, separados por comas, en la definición de la ruta. Esto permite aplicar múltiples validaciones.

Signup and view all the flashcards

Ruta protegida por rol

Una ruta accesible solo para usuarios autenticados con un rol específico (ej., 'admin').

Signup and view all the flashcards

Cierre de sesión (logout)

El proceso de finalizar una sesión activa, eliminando la información del usuario almacenada en la sesión.

Signup and view all the flashcards

Implementación del logout

Eliminar la propiedad req.session.usuario o destruir completamente el objeto req.session.

Signup and view all the flashcards

Destruir la sesión

Método para destruir la sesión en el servidor, eliminando los datos de la sesión del usuario.

Signup and view all the flashcards

¿Qué es express-session?

Módulo de Express que permite verificar si un usuario se ha validado antes de permitir el acceso.

Signup and view all the flashcards

¿Cómo se instala express-session?

Se instala con el comando npm install express-session.

Signup and view all the flashcards

¿Cómo se incorpora express-session en Express?

Requiere express y express-session usando require. Ejemplo: const express = require('express');

Signup and view all the flashcards

¿Qué es 'secret' en la configuración de express-session?

Clave de cifrado para la sesión, utilizada para enviar la sesión cifrada entre cliente y servidor.

Signup and view all the flashcards

¿Qué hace 'resave' en express-session?

Refresca la sesión con cada nuevo acceso, extendiendo su tiempo de vida.

Signup and view all the flashcards

¿Qué significa 'saveUninitialized' en express-session?

Determina si se guardan sesiones que no han sido completadas (usuarios no validados).

Signup and view all the flashcards

¿Dónde se configura la sesión en Express?

Antes de definir enrutadores para que el middleware de sesión se aplique correctamente.

Signup and view all the flashcards

¿Qué es la validación en autenticación?

Proceso donde el usuario envía sus credenciales para ser verificadas con la base de datos.

Signup and view all the flashcards

Study Notes

  • La seguridad basada en sesiones es un mecanismo común para definir la autenticación en aplicaciones web tradicionales.
  • El protocolo HTTP es sin estado, lo que dificulta que el servidor recuerde a los usuarios.
  • Los mecanismos de seguridad basados en sesiones añaden un elemento de sesión a la comunicación cliente-servidor, permitiendo almacenar información sobre el cliente.
  • El servidor puede recordar al cliente y concederle acceso cuando éste regresa.

Fundamentos de la autenticación basada en sesiones

  • La autenticación basada en sesiones permite autenticar a los usuarios en aplicaciones web y "recordar" al usuario a través de múltiples visitas.
  • Las sesiones son interacciones entre un cliente y un servidor durante un período.
  • Acceder a una web inicia una sesión, y la aplicación recuerda los pasos dados en la sesión actual.
  • Al acceder a una zona restringida, la aplicación solicita validación a través de un login y contraseña.
  • Si las credenciales son correctas, la sesión almacena datos del usuario, como el nombre de usuario y el rol.
  • El servidor comprueba quiénes somos y nuestro rol en cada nueva solicitud, permitiéndonos hacer ciertas cosas.
  • Se puede cerrar la sesión (logout) y borrar los datos guardados.

Definición de sesiones en Express

  • El módulo express-session es un middleware para trabajar con sesiones en Express.
  • Permite determinar si el usuario ha sido validado y con qué credenciales antes de conceder el acceso.
  • Primer paso es instalar el módulo: npm install express-session
  • Se debe configurar la sesión dentro de la aplicación Express, incluyendo una clave secreta, resave, y saveUninitialized.
  • secretes una clave de cifrado para la sesión, similar a una palabra secreta para cifrar un token.
  • resave se utiliza para refrescar la sesión en cada nuevo acceso, renovando el tiempo de caducidad.
  • saveUninitialized sirve para guardar sesiones aunque no se hayan completado, útil para almacenar datos de usuarios no validados.
  • La configuración de la sesión debe hacerse antes de definir los enrutadores.

Validación

  • En todo proceso de autenticación, se requiere una validación previa, donde el usuario proporciona sus credenciales cotejadas con la base de datos.
  • Se asume que tenemos a los usuarios listados en un array, con su usuario nombre y contraseña.
  • Una ruta, normalmente con POST, recoge y coteja las credenciales enviadas.
  • Si se encuentra la información del usuario, se guarda el nombre en la sesión y se redirige a una página de inicio.
  • De otro modo, se puede redirigir a una página de inicio de sesión con un mensaje de error.

Autenticación

  • Se usa un middleware que se aplica en cada ruta que queremos proteger, para verificar la sesión.
  • Si existe un usuario en sesión, la solicitud pasa. De lo contrario, se envía a la página para iniciar sesión.
  • Este middleware debe aplicarse en cada ruta (GET, POST, PUT, DELETE) que requiera validación.

Definiendo Roles

  • Las aplicaciones pueden tener roles para usuarios registrados, como administradores y usuarios normales.
  • Para comprobar permisos, podemos definir otro middleware que compruebe el rol del usuario
  • Se pueden aplicar los roles a una ruta determinada, comprobarlo en la autenticación y comprobar si tiene el rol adecuado, separados por comas, en la definición de la ruta.

Otras opciones

  • El texto incluye opciones como el cierre de sesión (logout), Acceder a la sesión desde las vistas, Tiempo de vida de la sesión

Cierre de sesión o logout

  • Se define una ruta que responda a la petición de logout y destruya todos los datos del usuario, reenviando a otro recurso.

Acceder a la sesión desde las vistas

  • Se utiliza un middleware que asocia la sesión con los recursos de la vista.
  • Este middleware debe definirse después del middleware que configura la sesión y antes de los enrutadores.
  • Luego, se puede acceder a esta sesión desde las vistas, a través de la variable session que hemos definido en la respuesta (res.locals).

Tiempo de vida de la sesión

  • Se puede establecer el tiempo de vida de la sesión, cuando la configuramos.
  • Podemos hacerlo indistintamente el atributo expires o el atributo maxAge, con una diferente sintaxis distinta según cuál utilicemos.
  • Se indica el número de milisegundos de vida, usando Date.now() en estos cálculos.
  • Se proporciona un ejemplo completo con una página de inicio pública, una restringida para usuarios validados y otra restringida para usuarios administradores, así como un formulario de inicio de sesión y una ruta de cierre de sesión.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Description

Aprenda sobre la autenticación basada en sesiones, un mecanismo común para definir la autenticación en aplicaciones web. Este enfoque permite a los servidores recordar a los usuarios a pesar de la naturaleza sin estado del protocolo HTTP. Descubra cómo las sesiones facilitan la gestión de la información del cliente y el acceso continuo.

More Like This

Use Quizgecko on...
Browser
Browser