🔓 Autorización Abierta (OAuth) y RESTful APIs
📘 ¿Qué es OAuth?
OAuth (Open Authorization) es un protocolo de autorización estándar abierto que permite a los usuarios autorizar aplicaciones de terceros para acceder a sus recursos sin compartir sus credenciales (contraseña).
Se usa ampliamente en APIs RESTful (por ejemplo, Google, Facebook, GitHub, Spotify, etc.) para permitir que una app use parte de los datos del usuario de forma segura.
🧩 Componentes Clave de OAuth
Componente Función
Propietario del recurso Usuario que concede acceso a sus datos
Cliente App que desea acceder a los datos del usuario
Servidor de recursos API que contiene los datos del usuario
Servidor de autorización Emite los tokens de acceso si el usuario lo autoriza
🔄 Flujo OAuth (Ejemplo clásico con app web)
-
El cliente (app) redirige al usuario al servidor de autorización.
-
El usuario inicia sesión y autoriza el acceso a sus datos.
-
El servidor de autorización genera un token de acceso (JWT) y se lo devuelve al cliente.
-
El cliente guarda este token y lo presenta al servidor de recursos cuando quiere consultar los datos.
-
Si el token es válido, el servidor de recursos entrega los datos autorizados.
🧪 Aplicaciones y herramientas en uso real
Herramienta / Proveedor Aplicación real
Google OAuth Login con Google en apps web y móviles
Spotify API + OAuth Apps que acceden a listas de reproducción sin ver contraseñas
GitHub OAuth Login de desarrolladores en plataformas como Netlify
Postman Para testear flujos OAuth2 con APIs RESTful
JWT.io Herramienta para ver y validar tokens JWT
🎯 ¿Qué hace un líder red, blue y purple team al respecto?
🔴 Red Team
-
Intenta interceptar tokens JWT en tránsito (si no está cifrado).
-
Busca configuraciones erróneas en redirecciones o flujos de autorización.
-
Realiza ataques de token reuse, token forgery o CSRF en flujos OAuth mal configurados.
🔵 Blue Team
-
Asegura que todos los tokens sean transmitidos por HTTPS.
-
Valida la firma y expiración de JWTs.
-
Implementa límites de alcance (scopes) para evitar acceso excesivo.
-
Monitoriza peticiones de acceso inusuales o repetidas (tokens robados o reutilizados).
🟣 Purple Team → ¿Cómo se ataca y cómo se defiende?
Ataque típico Defensa efectiva
Reutilización de token Verificación de timestamp y revocación de tokens
Redirección maliciosa (Open Redirect) Validar redirecciones permitidas (whitelist en el IdP)
Captura de token por MITM Forzar TLS y validar certificados
Tokens sin firma o con firma débil Usar firma fuerte (HS256, RS256) y verificación en backend
CSRF durante el flujo de autorización Usar state aleatorio y validarlo antes de autorizar
✅ Resumen práctico
OAuth → Autoriza acceso a apps sin compartir credenciales.
Ideal para APIs RESTful (Google, Spotify, GitHub, etc.).
Se basa en tokens temporales (JWT) que otorgan acceso controlado a recursos.
El cliente solo necesita presentar el token al servidor de recursos, no la contraseña.
Es la base de seguridad moderna para aplicaciones web, móviles y APIs.
🧠 Esquema visual práctico
1. App solicita acceso → redirige al servidor de autorización
2. Usuario se autentica y aprueba
3. El servidor de autorización emite un token
4. La app usa el token para consultar la API (servidor de recursos)
5. El recurso verifica el token y responde