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


¿Puede alguien darme una descripción paso a paso de cómo funciona la autenticación basada en cookies? Nunca he hecho nada relacionado con la autenticación o las cookies. ¿Qué necesita hacer el navegador? ¿Qué necesita hacer el servidor? En qué orden? ¿Cómo mantenemos las cosas seguras?

He estado leyendo acerca de diferentes tipos de autenticación y acerca de las cookies, pero me gustaría una descripción básica de cómo utilizar los dos juntos - solo he leído que a menudo se utilizan juntos, pero no podía encuentre una descripción de cómo hacerlo.

Author: Mastid, 2013-07-21

3 answers

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

Para establecer una cookie, solo tiene que agregarla a la respuesta que el servidor envía después de las solicitudes. El navegador añadirá la cookie al recibir la respuesta.

Hay diferentes opciones que puede configurar para el lado del servidor de cookies, como los tiempos de caducidad o el cifrado. Una cookie cifrada a menudo se conoce como una cookie firmada. Básicamente, el servidor encripta la clave y el valor en el elemento del diccionario, por lo que solo el servidor puede hacer uso de la información. Entonces cookie estaría segura.

Un navegador guardará las cookies establecidas por el servidor. En el encabezado HTTP de cada solicitud que el navegador haga a ese servidor, agregará las cookies. Solo agregará cookies para los dominios que las configuran. Example.com puede configurar una cookie y también agregar opciones en el encabezado HTTP para que los navegadores envíen la cookie de vuelta a los subdominios, como sub.example.com. Sería inaceptable que un navegador envíe cookies a un dominio diferente.

 109
Author: Conor Patrick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-10 12:45:29

Me doy cuenta de que esto es años tarde, pero pensé que podría ampliar la respuesta de Conor y añadir un poco más a la discusión.

¿Puede alguien darme una descripción paso a paso de cómo funciona la autenticación basada en cookies? Nunca he hecho nada relacionado con la autenticación o las cookies. ¿Qué necesita hacer el navegador? ¿Qué necesita hacer el servidor? En qué orden? ¿Cómo mantenemos las cosas seguras?

Paso 1: Cliente > Registrarse

Antes cualquier otra cosa, 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 de registro

El servidor recibe esta solicitud y hashea 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 tu usuario inicia sesión. Él / ella proporciona su nombre de usuario / contraseña y de nuevo, esto se publica como una solicitud HTTP al servidor.

Paso 4: Servidor > Validando inicio de sesión

El servidor busca el nombre de usuario en la base de datos, hashea la contraseña de inicio de sesión suministrada y la compara con la contraseña previamente hasheada en la base de datos. Si no se comprueba, podemos negarles el acceso mediante enviando un código de estado 401 y finalizando la solicitud.

Paso 5: Servidor > Generar acceso token

Si todo se comprueba, vamos a crear 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. Almacenarlo en la base de datos asociada con ese usuario
  2. Adjuntarlo a una cookie de respuesta para ser devuelto al cliente. Asegúrese de establecer una fecha/hora de caducidad para limitar la sesión del usuario

A partir de ahora, las cookies se adjuntarán a cada solicitud (y respuesta) realizado entre el cliente y el servidor.

Paso 6: Cliente > Hacer solicitudes de página

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

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

 182
Author: pllx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-31 23:10:41

Autenticación basada en cookies

La autenticación basada en cookies funciona normalmente en estos 4 pasos -

  1. El usuario proporciona un nombre de usuario y contraseña en el formulario de inicio de sesión y hace clic en Iniciar sesión.
  2. Después de realizar la solicitud, el servidor valida al usuario en el backend consultando en la base de datos. Si la solicitud es válida, creará una sesión mediante el uso de la información de usuario obtenida de la base de datos y los almacenará, para cada sesión un id único llamado Id de sesión es creado, por defecto Id de sesión se dará al cliente a través del navegador.
  3. El navegador enviará este ID de sesión en cada solicitud posterior, el ID de sesión se verifica en la base de datos, en función de este sitio web id de sesión identificará la sesión que pertenece a qué cliente y luego dará 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 lado del servidor.

 5
Author: Debendra Dash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-10 05:45:26