Logo Logo
GitHub Designed by Logto

¿Qué es un token opaco?

Un token opaco es una cadena aleatoria y única que no tiene significado para el cliente, pero sirve como una clave de referencia para buscar datos de autorización en la base de datos del servidor.

Los tokens opacos generalmente se generan utilizando un Generador de números pseudoaleatorios criptográficamente seguros para garantizar su imprevisibilidad y seguridad, y su formato está determinado por su issuer (emisor).

Aquí hay un ejemplo de un token opaco:

M-oxIny1RfaFbmjMX54L8Pl-KQEPeQvF6awzjWFA3iq

¿Cuál es la diferencia entre JWT (JSON Web Token) y token opaco?

La principal diferencia radica en cómo estos tokens manejan y validan la información de autorización:

Un token opaco es una cadena aleatoria que no contiene información en sí misma. El servidor debe consultar su base de datos de backend para recuperar cualquier dato de autorización asociado con este token. Esto hace que los tokens opacos dependan completamente del authorization server (servidor de autorización) para su validación e interpretación.

JWT es un token autónomo que lleva toda la información necesaria dentro de sí mismo.

Aquí hay un ejemplo de un JWT, es una cadena codificada en base64:

eyJhbGciOiJIUzI1NiIs.eyJzdWIiOiIxMjM0NTY3O.SflKxwRJSMeKKF2QT4f

Y contiene tres partes separadas por puntos:

  1. Header - Contiene información sobre el tipo de token y el algoritmo utilizado para firmar. Por ejemplo, {"alg": "HS256", "typ": "JWT"}.
  2. Payload - Contiene claims (reclamaciones): piezas de información sobre el usuario o la autorización, como el ID de usuario, el tiempo de expiración y los scopes (alcances). Cualquiera puede decodificarlo para ver las reclamaciones porque está codificado pero no cifrado.
  3. Signature - Generada combinando el header, payload y una clave secreta utilizando el algoritmo especificado. Esta firma se utiliza para verificar la integridad del token y asegurar que no ha sido alterado.

Esta estructura permite que los JWT se validen y utilicen sin consultar una base de datos.

Para obtener información más detallada sobre los JWT, consulte JSON Web Token (JWT) .

Y consulte Token opaco vs JWT para aprender más sobre sus diferencias en profundidad.

Cómo validar un token opaco

En sistemas simples, la validación de tokens opacos generalmente es manejada directamente por el servidor, que consulta la base de datos utilizando el token opaco como clave para recuperar la información de autorización asociada.

En sistemas multipartitos que introducen OAuth 2.0, múltiples resource servers (servidores de recursos) (ver: Servidor de recursos (Resource server) ) pueden necesitar validar el mismo token opaco. OAuth 2.0 proporciona un mecanismo estandarizado de token introspection (inspección de tokens) para esta validación:

Para obtener información detallada sobre la inspección de tokens, consulte Análisis de token (Token introspection) .

¿Cómo se utilizan los tokens opacos en OIDC?

En el contexto de OIDC ( OpenID Connect (OIDC) ), los tokens opacos sirven para propósitos específicos en diferentes escenarios:

Recuperación de perfil de usuario

Por defecto, cuando un cliente solicita un access token (token de acceso) sin especificar un recurso e incluye el scope openid, el authorization server emite un access token opaco. Este token se utiliza principalmente para recuperar información del perfil de usuario desde el endpoint /oidc/userinfo de OIDC (ver: Endpoint de información del usuario (Userinfo endpoint) ).

Intercambio de refresh token

Los refresh tokens (tokens de actualización) (ver: Token de actualización (Refresh token) ) generalmente se emiten como tokens opacos ya que solo se intercambian entre el cliente y el authorization server. Cuando el access token actual expira, el cliente puede usar el refresh token opaco para obtener un nuevo access token sin volver a autenticar al usuario.

¿Cuáles son los pros y los contras de los tokens opacos?

Pros

  • Seguridad: Los tokens opacos son perfectos para manejar datos sensibles como los refresh tokens. Dado que el contenido es completamente aleatorio y sin sentido, incluso si alguien intercepta el token, no puede extraer información útil. Esto los hace especialmente valiosos en escenarios de alta seguridad como transacciones bancarias o manejo de datos sensibles de usuarios.

  • Revocabilidad: El servidor puede invalidar inmediatamente un token opaco en cualquier momento. Esto es particularmente útil cuando necesitas eliminar rápidamente el acceso de un usuario. A diferencia de los JWT que permanecen válidos hasta que expiran, los tokens opacos pueden ser revocados instantáneamente (ver: Limitaciones de JWT ).

  • Tamaño: Los tokens opacos son típicamente mucho más cortos que los JWT. Este tamaño reducido disminuye el uso del ancho de banda de la red y los requisitos de almacenamiento. El beneficio se vuelve particularmente notable en sistemas que transmiten tokens con frecuencia, como aplicaciones móviles o dispositivos IoT.

  • Simplicidad: La implementación de tokens opacos es sencilla. Generas una cadena aleatoria y la almacenas con sus datos asociados. No hay necesidad de manejar cifrado complejo o verificación de firmas como con los JWT. Esta simplicidad los hace ideales para la autenticación de sistemas internos.

Contras

  • Con estado: Cada token opaco requiere almacenamiento en el lado del servidor. Esto crea complejidad adicional en sistemas distribuidos porque los datos del token deben sincronizarse entre múltiples servidores. Por ejemplo, si tienes múltiples authentication servers (servidores de autenticación), todos necesitan acceso a la misma base de datos de tokens o sistema de caché para validar los tokens correctamente.

  • Rendimiento: La validación de tokens siempre requiere una consulta a la base de datos o una llamada a la API. En sistemas de alto tráfico, estas consultas adicionales a la base de datos pueden crear cuellos de botella en el rendimiento. Por ejemplo, si tu sistema maneja miles de solicitudes por segundo, cada una requiriendo validación de tokens, la carga adicional en la base de datos se vuelve significativa.

  • Interoperabilidad: Diferentes sistemas pueden implementar tokens opacos de diferentes maneras. Esto puede causar desafíos de integración al trabajar con servicios de terceros o diferentes authorization servers. Aunque estándares como la inspección de tokens de OAuth 2.0 ayudan, aún puedes encontrar problemas de compatibilidad cuando los sistemas utilizan diferentes formatos de tokens o métodos de validación.

Ver también