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

La autenticación basada en tokens es una forma de confirmar la identidad de un usuario o dispositivo. Se encarga de comprobar si la entidad en cuestión posee un token previamente emitido.

Metas de aprendizaje

Después de leer este artículo podrás:

  • Definir la autenticación basada en tokens
  • Describir los dos tipos de autenticación basada en tokens
  • Comparar la autenticación con tokens con la autenticación basada en cookies para aplicaciones web

Contenido relacionado


¿Quieres saber más?

Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.

Revisa la política de privacidad de Cloudflare para saber más sobre cómo Cloudflare gestiona tus datos personales.

Copiar el enlace del artículo

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

La autenticación basada en tokens es el proceso de verificar la identidad mediante la comprobación de un token. En la gestión de acceso, los servidores utilizan la autenticación por token para comprobar la identidad de un usuario, una API, un ordenador u otro servidor.

Un token es un elemento simbólico que expide una fuente de confianza. Pensemos en cómo los policías llevan consigo una insignia expedida por las autoridades que legitima su autoridad. Las fichas pueden ser físicas (como una llave USB) o digitales (un mensaje generado por ordenador o una firma digital).

La autenticación basada en tokens puede hacer referencia a un par de procesos diferentes:

  1. Verificar la identidad mediante un token físico. Es un factor de autenticación muy habitual para iniciar sesión: se pide a los usuarios que presenten su token al iniciar sesión en una cuenta o en un dispositivo. (Los factores de autenticación se describen con más detalle en ¿Qué es la autenticación?)
  2. Corroborar la identidad mediante un token web. Los tokens web son completamente digitales. Un token web es generado por un servidor y enviado a un cliente. El token se adjunta a cada solicitud del cliente para que el servidor conozca la identidad del cliente y sepa a qué datos puede acceder. Este tipo de autenticación basada en tokens se diferencia de la autenticación basada en cookies, que es una forma similar de conseguir lo mismo. Más información a continuación.

¿Cómo funciona la autenticación con un token físico?

La autenticación mediante un token físico suele tener lugar durante el proceso de inicio de sesión del usuario. El usuario tiene que demostrar que posee un objeto que nadie más tiene. Puede demostrarlo introduciendo un código mostrado por el objeto, conectando el objeto a un dispositivo mediante USB, conectando el objeto mediante Bluetooth o por varios otros métodos. Al igual que introducir una contraseña demuestra que el usuario posee un conocimiento que nadie más tiene, el uso de un token demuestra que un usuario posee un elemento que solo él tiene.

Se utilizan dos tipos de tokens para este tipo de autenticación: tokens blandos tokens duros.

  • Los tokens blandos implican introducir un código secreto o un mensaje enviado a un dispositivo para demostrar la posesión del mismo. Suele ser un código enviado a un teléfono inteligente a través de un mensaje de texto.
  • Lo tokens duros son elementos de hardware que el usuario conecta directamente a un ordenador o dispositivo móvil para iniciar sesión.

¿Cómo funciona la autenticación mediante token web?

Un token web es digital, no un objeto físico. Es un mensaje enviado desde un servidor a un cliente y que este almacena temporalmente. El cliente incluye una copia del token en las siguientes solicitudes enviadas al servidor para confirmar el estado de autenticación del cliente.

Mientras que la autenticación con tokens físicos verifica la identidad durante el proceso de inicio de sesión, los tokens web se emiten como resultado de un inicio de sesión con éxito. Mantienen activa la sesión iniciada.

Sin embargo, utilizar tokens web para las sesiones de usuario no siempre es lo mejor. Muchos desarrolladores son partidarios de utilizar cookies en su lugar. Los tokens web se pueden utilizar mejor para la autenticación de puntos finales de la API o para validar una conexión entre servidores, en lugar de entre el servidor y el cliente.

¿Qué es el Token web JSON (JWT)?

En desarrollo web, los "tokens web" hacen referencia casi siempre a los Tokens web JSON. El Token web JSON (JWT) es un estándar para crear tokens web firmados digitalmente que contienen datos de Notación de objetos de JavaScript (JSON). Un servidor crea un token que demuestra la identidad del cliente y se lo envía a este. JWT utiliza firmas digitales para demostrar que el token es legítimo.

Los JWT incluyen tres componentes:

  • Encabezado: el encabezado proporciona información sobre el JWT: qué tipo de token es y qué método se ha utilizado para firmarlo digitalmente.
  • Carga útil: cualquier dato JSON puede ir aquí. Las cargas útiles de JWT para la autenticación incluyen afirmaciones sobre la identidad del usuario en la carga útil. También pueden incluir información sobre los permisos del usuario, del servidor o del punto final de la API.
  • Firma digital: la firma utiliza criptografía para firmar el encabezado y la carga útil con una clave para asegurar que los datos que contienen sean legítimos. Pensemos que la firma digital es como el precinto del envase de un medicamento.

Autenticación basada en tokens (JWT) vs. autenticación basada en cookies

En ocasiones, los JWT se utilizan para mantener a los usuarios autentificados una vez que han iniciado sesión en una aplicación web. No obstante, las cookies también pueden utilizarse para este fin.

Una cookie es un pequeño archivo de datos que un servidor envía a un cliente. Cuando un usuario se registra en una aplicación web, el servidor genera una cookie y la envía al dispositivo cliente (normalmente el ordenador o el teléfono inteligente del usuario). El dispositivo cliente almacena la cookie en la caché del navegador e incluye una copia de la cookie en futuras solicitudes al servidor, parecido a como se pueden utilizar los JWT. Una vez el usuario cierra la sesión, el navegador elimina la cookie.

Las cookies tienen un tamaño de archivo mucho menor en comparación con los JWT, porque los JWT incluyen encabezados y firmas digitales además de la carga útil. En cambio, la cookie solo contiene la carga útil. Esto las hace mucho más eficientes en términos de rendimiento web y de ancho de banda.

  • Rendimiento web: una cookie se carga más rápido porque contiene menos información, al igual que una foto se descarga más rápido que un vídeo.
  • Ancho de banda: como las cookies son más pequeñas, reducen la cantidad total de datos que deben pasar por las redes entre el cliente y el servidor. Esto puede suponer un ahorro de costes para el operador de la aplicación web en comparación con las JWT.

Los JWT no están optimizados para el rendimiento porque incluyen firmas digitales, que garantizan que no se haya manipulado su contenido. Pero si una aplicación web utiliza HTTPS (como debería), una cookie debería tener defensas contra manipulaciones de todos modos. HTTPS encriptará y firmará la cookie junto con todos los demás datos HTTP que se intercambien entre el cliente y el servidor, y los atacantes no deberían poder falsificarla o interceptarla en tránsito, a menos que realicen un ataque en ruta.

Los JWT son más apropiados para las API y las conexiones de servidor a servidor. Estos usos no necesitan escalar tanto: una aplicación web puede tener un millón de usuarios, pero no va a tener un millón de conexiones API. Esto reduce el impacto potencial sobre el rendimiento y el ancho de banda. Sin embargo, otros métodos de autenticación, como el TLS mutuo, a veces son más eficientes para las API. Más información sobre el TLS mutuo.