¿Cómo funciona la autenticación basada en cookies?

Resuelto Mastid asked hace 11 años • 3 respuestas

¿Cuál sería una descripción paso a paso de cómo funciona la autenticación basada en cookies?

Nunca he hecho nada que implique autenticación o cookies. ¿Qué debe hacer el navegador? ¿Qué debe hacer el servidor? ¿En qué orden? ¿Cómo mantenemos las cosas seguras?

He estado leyendo sobre diferentes tipos de autenticación y cookies, pero me gustaría una descripción básica de cómo usar los dos juntos. Sólo he leído que a menudo se usan juntos, pero no pude encontrar una descripción de cómo.

Mastid avatar Jul 21 '13 11:07 Mastid
Aceptado

Para ampliar la respuesta de Conor y agregar un poco más a la discusión...

¿Alguien puede darme una descripción paso a paso de cómo funciona la autenticación basada en cookies? Nunca he hecho nada que implique autenticación o cookies. ¿Qué debe hacer el navegador? ¿Qué debe hacer el servidor? ¿En qué orden? ¿Cómo mantenemos las cosas seguras?

Paso 1: Cliente > Registrarse

Antes que nada, el usuario tiene que registrarse. El cliente envía una solicitud HTTP al servidor que contiene su nombre de usuario y contraseña.

Paso 2: Servidor > Manejo del registro

El servidor recibe esta solicitud y codifica la contraseña antes de almacenar el nombre de usuario y la contraseña en su base de datos. De esta manera, si alguien obtiene acceso a su base de datos, no verá las contraseñas reales de sus usuarios.

Paso 3: Cliente > Inicio de sesión de usuario

Ahora su usuario inicia sesión. Proporciona su nombre de usuario/contraseña y nuevamente, esto se publica como una solicitud HTTP en el servidor.

Paso 4: Servidor > Validar inicio de sesión

El servidor busca el nombre de usuario en la base de datos, codifica la contraseña de inicio de sesión proporcionada y la compara con la contraseña previamente codificada en la base de datos. Si no se verifica, podemos negarles el acceso enviándoles un código de estado 401 y finalizando la solicitud .

Paso 5: Servidor > Generar token de acceso

Si todo sale bien, crearemos un token de acceso, que identifica de forma única la sesión del usuario. Aún en el servidor hacemos dos cosas con el token de acceso:

  1. Guárdelo en la base de datos asociada a ese usuario.
  2. Adjuntelo a una cookie de respuesta que se devolverá al cliente. Asegúrese de establecer una fecha/hora de vencimiento para limitar la sesión del usuario

De ahora en adelante, las cookies se adjuntarán a cada solicitud (y respuesta) realizada entre el cliente y el servidor.

Paso 6: Cliente > Realizar solicitudes de página

De vuelta en el lado del cliente, ahora hemos iniciado sesión. Cada vez que el cliente realiza una solicitud para una página que requiere autorización (es decir, debe iniciar sesión), el servidor obtiene el token de acceso de la cookie y lo compara con el en la base de datos asociada a ese usuario. Si se verifica, se concede el acceso.

Esto debería ayudarte a empezar. ¡Asegúrese de borrar las cookies al cerrar sesión!

pllx avatar Aug 26 '2015 04:08 pllx

Una cookie es básicamente sólo un elemento de un diccionario. Cada elemento tiene una clave y un valor. Para la autenticación, la clave podría ser algo así como "nombre de usuario" y el valor sería el nombre de usuario. Cada vez que realiza una solicitud a un sitio web, su navegador incluirá las cookies en la solicitud y el servidor host verificará las cookies. Entonces la autenticación se puede hacer automáticamente de esa manera.

Para configurar una cookie, solo tiene que agregarla a la respuesta que el servidor envía después de las solicitudes. Luego, el navegador agregará la cookie al recibir la respuesta.

Hay diferentes opciones que puedes configurar para el lado del servidor de cookies, como tiempos de caducidad o cifrado. Una cookie cifrada suele denominarse cookie firmada. Básicamente, el servidor cifra la clave y el valor en el elemento del diccionario, por lo que solo el servidor puede hacer uso de la información. Entonces la cookie sería segura.

Un navegador guardará las cookies configuradas por el servidor. En el encabezado HTTP de cada solicitud que el navegador realice a ese servidor, agregará las cookies. Sólo agregará cookies para los dominios que las configuran. Ejemplo.com puede configurar una cookie y también agregar opciones en el encabezado HTTP para que los navegadores envíen la cookie a subdominios, como sub.ejemplo.com. Sería inaceptable que un navegador enviara cookies a un dominio diferente.

Conor Patrick avatar Jul 21 '2013 04:07 Conor Patrick

Autenticación basada en cookies

La autenticación basada en cookies normalmente funciona en estos cuatro pasos:

  1. El usuario proporciona un nombre de usuario y contraseña en el formulario de inicio de sesión y el cliente/navegador envía una solicitud de inicio de sesión.

  2. Una vez realizada la solicitud, el servidor valida al usuario en el backend consultando la base de datos. Si la solicitud es válida, creará una sesión utilizando la información del usuario obtenida de la base de datos y la almacenará. Para cada sesión se crea una identificación única llamada ID de sesión. De forma predeterminada, el ID de la sesión se proporcionará al cliente a través del navegador.

  3. El navegador enviará este ID de sesión en cada solicitud posterior. El ID de la sesión se verifica con la base de datos. Según este ID de sesión, el servidor identificará la sesión que pertenece a qué cliente y luego otorgará acceso a la solicitud.

  4. Una vez que un usuario cierra sesión en la aplicación, la sesión se destruye tanto en el lado del cliente como en el del servidor.

Debendra Dash avatar Feb 10 '2018 05:02 Debendra Dash