authentication oauth saml jwt bearer-token security decoding

Guía de decodificación de tokens de autenticación: OAuth, SAML y tokens de portador

Una guía técnica para decodificar y depurar tokens de autenticación modernos. Aprenda a analizar tokens de acceso OAuth, aserciones SAML y tokens de portador para análisis de seguridad.

Guía de decodificación de tokens de autenticación: OAuth, SAML y tokens de portador

En el desarrollo web moderno, la autenticación rara vez es tan simple como un nombre de usuario y una contraseña. En su lugar, los sistemas intercambian "tokens": cadenas opacas o semitransparentes que llevan datos de identidad y permisos. Al depurar flujos de autenticación o realizar auditorías de seguridad, poder decodificar e inspeccionar estos tokens es una habilidad crítica.

Esta guía explora la estructura técnica de los tokens de autenticación más comunes y cómo decodificarlos.


1. El token de portador (Bearer Token: JWT y más allá)

El token de portador es la forma más común de autenticar solicitudes de API. Normalmente se envía en el encabezado Authorization:

Authorization: Bearer <token>

¿Qué es un token de portador?

Un token de portador es un token de seguridad que otorga acceso a quien lo "lleva". Es como una llave física; al sistema no le importa quién eres, solo que tengas la llave.

Decodificación de tokens de portador

La mayoría de los tokens de portador modernos son JWT (JSON Web Tokens). Un JWT consta de tres partes codificadas en Base64Url:

  1. Header (Encabezado): Metadatos sobre el token (algoritmo, tipo).
  2. Payload (Carga útil): Los "claims" o afirmaciones (ID de usuario, expiración, alcances).
  3. Signature (Firma): Prueba criptográfica de que el token no ha sido manipulado.

Para decodificar un JWT manualmente, puede dividir la cadena por los puntos y usar un decodificador Base64Url en las dos primeras partes. Para una experiencia más visual, puede usar un Decodificador JWT.


2. Decodificación de tokens OAuth

OAuth 2.0 utiliza varios tipos de tokens, pero el que se encuentra con más frecuencia es el Access Token (Token de acceso).

Tokens opacos vs. estructurados

  • Tokens estructurados (JWT): Como se describió anteriormente, estos se pueden decodificar localmente para ver los datos del usuario.
  • Tokens opacos: Son cadenas aleatorias (como ghp_... para GitHub) que no tienen significado para el cliente. Solo pueden ser "decodificados" por el servidor de autorización que los emitió, generalmente a través de un punto final de introspección (Introspection Endpoint).

Cómo inspeccionar un token OAuth

Si el token es un JWT, siga el proceso estándar de decodificación de JWT. Si es opaco, es posible que deba consultar la documentación del proveedor específico (Google, Microsoft, GitHub) para ver si proporcionan una herramienta de depuración o una API para inspeccionar los metadatos del token (alcances, vencimiento, etc.).


3. Decodificador de aserciones SAML

SAML (Security Assertion Markup Language) es el hermano mayor de JWT basado en XML. Se utiliza mucho en el inicio de sesión único (SSO) empresarial.

El flujo SAML

Cuando inicia sesión a través de SAML, el proveedor de identidad (IdP) envía una SAMLResponse a su aplicación, generalmente como un campo de formulario oculto.

Cómo decodificar una aserción SAML

Una aserción SAML suele ser un documento XML codificado en Base64.

  1. Decodificación Base64: Vuelva a convertir la cadena en XML sin formato.
  2. Impresión estética (Pretty Print): Formatee el XML para que sea legible.
  3. Inspeccionar afirmaciones: Busque <saml:AttributeStatement> para encontrar el correo electrónico, los roles y otros atributos del usuario.

Debido a que las aserciones SAML son XML, son mucho más detalladas que los JWT y a menudo incluyen firmas digitales (<ds:Signature>) y, a veces, cifrado.


4. Decodificador de autenticación básica (Basic Auth)

Aunque es más antigua, la autenticación básica sigue siendo común para API simples o herramientas internas.

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Decodificación de Basic Auth

La cadena después de Basic es una cadena simple codificada en Base64 en el formato usuario:contraseña. Para decodificarlo:

  1. Tome la cadena dXNlcm5hbWU6cGFzc3dvcmQ=.
  2. Decodifíquela en Base64 para obtener usuario:contraseña.

Tabla resumen: Decodificación de tokens de un vistazo

Tipo de token Prefijo de encabezado Formato Método de decodificación
JWT Bearer JSON / Base64Url Decodificación Base64Url + Análisis JSON
OAuth (Opaco) Bearer Cadena aleatoria API de introspección de tokens
SAML N/A (Formulario) XML / Base64 Decodificación Base64 + Análisis XML
Basic Auth Basic Cadena / Base64 Decodificación Base64

Conclusión

Comprender cómo decodificar los tokens de autenticación es esencial para solucionar errores de "No autorizado" y garantizar que su aplicación esté pasando los permisos correctos. Ya sea que se trate de un JWT moderno o una aserción SAML heredada, el primer paso es siempre identificar la codificación (generalmente Base64) y el formato subyacente (JSON o XML).

¿Necesita una forma rápida de inspeccionar un token? Utilice nuestro Decodificador JWT para analizar sus tokens de forma segura localmente en su navegador.