Saltar al contenido principal
patrón hexagonal morado

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

La autenticación basada en tokens comienza con el inicio de sesión de un usuario en un sistema, dispositivo o aplicación, normalmente utilizando una contraseña o una pregunta de seguridad. Un servidor de autorización valida esa autenticación inicial y luego emite un token de acceso, que es un pequeño dato que le permite a una aplicación de cliente realizar una llamada o señal segura a un servidor API.

La autenticación basada en tokens funciona al darle al servidor una segunda forma de alta seguridad para verificar la identidad del usuario y la autenticidad de la solicitud.

Una vez completado este protocolo inicial de autenticación basado en tokens, el token funciona como un boleto certificado: El usuario puede seguir accediendo sin problemas a los recursos pertinentes, sin tener que volver a autenticarse, mientras dure el ciclo de vida del token. Este ciclo de vida finaliza cuando el usuario cierra la sesión o abandona una aplicación, y también puede ser activado por un protocolo de tiempo de espera establecido.

¿Cuáles son los beneficios de la autenticación basada en tokens?

La autentificación basada en tokens ofrece muchas ventajas a las partes interesadas:

  • Mejores experiencias de usuarios: En lugar de tener que reintroducir las credenciales y volver a autentificarse cada vez que se vuelve a un sistema, aplicación o página web, el usuario conserva el acceso sin obstrucciones mientras el token siga siendo válido (generalmente hasta que la sesión finalice al cerrar la sesión o al abandonarla).
  • Seguridad digital añadida: La autenticación basada en tokens añade una capa adicional de seguridad a la autenticación tradicional basada en contraseñas o en servidores. Los tokens son, por lo general, mucho más difíciles de robar, hackear o poner en peligro que una contraseña.
  • Control administrativo: La autentificación basada en tokens ofrece a los administradores un control mucho más granular y visibilidad sobre cada acción y transacción del usuario.
  • Una carga tecnológica más ligera: Dado que la generación de tokens puede desvincularse totalmente de la verificación de los mismos, esta puede ser gestionada por un servicio secundario como el que ofrece la solución Gestión de identidad y acceso (IAM) de Entrust. Esto reduce significativamente la carga de los servidores y dispositivos internos.

¿Qué es un token de acceso?

Los tokens de acceso o autenticación conceden a los usuarios el acceso a un dispositivo, aplicación u otro recurso digital. Hoy en día existen muchos tipos de tokens:

Tokens de hardware

Los tokens de hardware son pequeños dispositivos físicos que los usuarios presentan para acceder a un recurso. Los tokens de hardware pueden estar conectados (es decir, USB, tarjeta inteligente, dispositivo de seguridad Key Fob de único uso) o sin contacto (es decir, tokens mediante Bluetooth). Los usuarios llevan consigo estos tokens. En los principios de la autenticación basada en tokens (leer: antes de los teléfonos inteligentes), los tokens de hardware eran la única opción. Sin embargo, los tokens de hardware son relativamente caros, están sujetos a pérdidas y robos, y a menudo requieren un apoyo informático más importante como resultado.

Tokens de software

Los tokens de software, también llamados tokens desconectados, son realmente sin contacto y pueden autenticar la identidad desde cualquier lugar. Los ejemplos más comunes de tokens de software son ahora las aplicaciones móviles que utilizan los smartphones para facilitar la autenticación de dos factores (2FA), la autenticación de factores múltiples (MFA) o los tokens web JSON. Los tokens de software son la opción más elegida para la autenticación basada en tokens, ya que ofrecen una ventaja en cuanto a la reducción de costos, la disminución de la fricción con el usuario, la reducción de la probabilidad de pérdida o robo y el menor riesgo de ataques por desconocidos.

¿Qué son los tokens web de código abierto o JSON?

El tipo más común de tokens desconectados o de software es el token de código abierto, más específicamente, el JSON Web Token (JWT). El JSON es un estándar de código abierto (RFC 7519) que ofrece un protocolo simple y autónomo para codificar información como un objeto JSON, lo que permite que esa información se transmita de manera eficiente y segura. Los JWT han aumentado su popularidad porque son objetos extremadamente compactos que pueden transmitirse de muchas maneras eficientes, incluso a través de cadenas de consulta, atributos de cabecera y dentro del cuerpo de una solicitud POST.

Los componentes de un token web de código abierto o JSON

Un token web JSON consta de tres partes distintas:

  • Cabecera: El tipo de token y algoritmo de cifrado
  • Carga útil: Las credenciales de autenticación para el recurso dado
  • Firma: Una clave criptográfica para verificar la autenticidad de la carga útil

¿Cómo se implementa la autenticación basada en tokens?

Hay cinco pasos clave para implementar un protocolo de autenticación basado en tokens:

  1. Solicitud: Un usuario introduce sus credenciales de acceso
  2. Verificación: El servidor verifica las credenciales del usuario
  3. Envío de tokens: El servidor genera un token que será válido durante un período determinado
  4. Almacenamiento: El token es almacenado por el navegador web del usuario para su uso futuro
  5. Caducidad: El token permanece activo durante un periodo determinado

Cinco pasos para implementar la autenticación basada en tokens

¿Cuándo se recomienda la autenticación basada en tokens?

Hay muchos casos en los que la autenticación basada en una contraseña o en un servidor es más que suficiente para satisfacer las necesidades de seguridad. Sin embargo, hay varias características que señalan una situación en la que la seguridad adicional, el control y la comodidad del usuario de la autenticación basada en tokens son particularmente útiles:

  • Sistemas/recursos que frecuentemente conceden acceso temporal: Si su base de usuarios varía mucho según el día o la hora, el protocolo tradicional para conceder y luego rescindir el acceso temporal de los usuarios puede ser excesivamente largo, costoso y difícil tecnológicamente.Los tokens pueden proporcionar una solución dinámica, ágil y rentable para un acceso temporal seguro y sin errores.
  • Sistemas y recursos que requieren un control de acceso granular: Si necesita controlar el acceso a un nivel mucho más granular, por ejemplo, conceder acceso a partes específicas de un documento o conceder privilegios específicos de edición o uso, la autenticación basada en contraseña no servirá. La autenticación basada en tokens es ideal para estos aspectos mucho más detallados y un control administrativo más granular.
  • Sistemas y recursos que corren un alto riesgo de ser hackeados o comprometidos: Si su recurso digital contiene información especialmente sensible, valiosa o protegida, la autenticación basada en tokens ofrece un avance significativo respecto a la autenticación basada en contraseñas.
  • Sistemas y recursos altamente regulados: En relación con el punto anterior, si su recurso digital contiene información sensible que está protegida por requisitos de privacidad de datos u otras normativas, es probable que esas normativas estipulen que la autenticación vaya más allá de las contraseñas básicas. La autenticación basada en tokens, si se configura correctamente, puede cumplir con los requisitos de conformidad de protección de alta seguridad.

Mejores prácticas para la autenticación de alta seguridad basada en tokens

Aunque la autenticación basada en tokens es, sin duda, un gran paso por encima de la autenticación tradicional basada en contraseñas, el token sigue considerándose un "token al portador", es decir, el acceso se concede a quien tiene el token. Esto significa que incluso los tokens de software, como las aplicaciones móviles, siguen siendo susceptibles de ser robados o comprometidos: Si un individuo malintencionado entra en posesión de un token, podría utilizarlo para obtener acceso no autorizado a recursos e información protegidos. Para protegerse contra este riesgo posible de peligro y violación, es importante construir su programa de autenticación basado en tokens en torno a las siguientes mejores prácticas:

  • El token debe ser confidencial: Los usuarios deben tratar al token, ya sea hardware o software, como cualquier credencial segura. Esto significa que debe almacenarse de forma segura, no compartirse nunca y solo revelarse a servicios verificados, para evitar su pérdida o robo.
  • Simplificar la carga útil de los tokens: Los tokens están diseñados para utilizar la cantidad mínima de información para autenticar a un usuario. Si bien están codificados, también son fácilmente decodificados por actores maliciosos. Por esta razón, nunca coloque información sensible o protegida dentro de la carga útil del token, y trate de minimizar las reclamaciones a la carga útil. Esto también ayudará a aumentar la velocidad y el rendimiento.
  • Definir la caducidad de los tokens y activar la revocación de los mismos: Un token suele estar configurado para que caduque automáticamente cuando un usuario se desconecta o hace una salida abrupta. Pero técnicamente, en ausencia de este desencadenante de fin de sesión, un token firmado no tiene caducidad incorporada. Para protegerse contra el peligro, debe establecer una caducidad por defecto en todos los tokens y tener un protocolo para revocar los tokens cuando sea necesario.
  • Utilice siempre conexiones HTTPS: Las conexiones no seguras hacen que sea increíblemente fácil interceptar y robar tokens en tránsito. Utilice siempre conexiones HTTPS cuando transmita los tokens hacia y desde el servidor de verificación de tokens.
  • Considerar la posibilidad de una o varias capas adicionales o de seguridad: Dependiendo de sus requisitos de seguridad, puede ser necesario añadir protocolos de seguridad y autenticación adicionales a la autenticación básica basada en tokens. Por ejemplo, algunos casos de uso añaden un segundo sistema de verificación de tokens que garantiza específicamente que todos los tokens se generan desde el servidor correcto.