OAUTH Y OAUTH 2.0: LA CLAVE DE LA AUTENTICACIÓN MODERNA

OAuth, Open Authorization, es un protocolo de autorización abierto que permite a una aplicación o sitio web acceder a recursos de un usuario en otro servicio sin necesidad de conocer su contraseña. En lugar de dar tu usuario y contraseña, OAuth actúa como un intermediario seguro que otorga permisos limitados y temporales. Ejemplo sencillo: Cuando se usa una aplicación como y se le da permiso para acceder a tus fotos de Google, se está usando OAuth.

¿Cómo funciona OAuth 2.0?

OAuth 2.0 se basa en roles y flujos:

Roles principales

    Resource Owner: El usuario final.
  • Client: La aplicación que quiere acceder (ej: una web o app móvil).
  • Authorization Server: El servidor que autentica al usuario como Google, Facebook, etc.
  • Resource Server: El servidor que guarda los datos como fotos o contactos).

Flujo más común

  1. Authorization Code: El usuario hace clic en “Iniciar sesión con Google”.
  2. Es redirigido al servidor de Google.
  3. Se autentica y da los permisos solicitados.
  4. Google devuelve un código de autorización temporal.
  5. La aplicación intercambia ese código por un Access Token.
  6. Con el Access Token, la aplicación puede acceder a los datos permitidos.
Los tokens suelen tener una duración limitada y se pueden refrescar con un Refresh Token.

Ventajas de OAuth 2.0

  • Mejor experiencia de usuario ya que no hay que recordar nuevas contraseñas.
  • Mayor seguridad ya que nunca se comparte la contraseña.
  • Control granular de permisos ya que la app solo accede a lo que necesita.
  • Escalabilidad y estandarización.
  • Soporte para Single Sign-On.

Casos de uso comunes

  • Login con Google, Facebook, GitHub, LinkedIn, etc.
  • Integraciones entre herramientas como Slack y Google Calendar.
  • APIs de terceros como Stripe, Dropbox, Microsoft Graph, etc.
  • Microservicios internos en grandes empresas.
  • Aplicaciones móviles nativas.

OAuth 1.0 vs OAuth 2.0

Comparación: OAuth 1.0 vs OAuth 2.0
Característica OAuth 1.0 OAuth 2.0
Año de creación 2010 2012 - 2013
Complejidad Alta (firmas criptográficas) Baja y más simple
Seguridad Buena Mejor y más flexible
Uso actual Casi obsoleto Estándar mundial
Tipo de Token No usa tokens Access Token + Refresh Token
Velocidad Más lenta Más rápida
Recomendado No recomendado Recomendado

Diferencias clave entre OAuth y OAuth 2.0

  • OAuth 1.0 requería firmas criptográficas en cada petición.
  • OAuth 2.0 usa tokens, normalmente JWT o tokens opacos, y se basa en HTTPS.
  • OAuth 2.0 es más flexible pero también más fácil de implementar incorrectamente.

Consideraciones de Seguridad

Aunque OAuth 2.0 es seguro cuando se implementa bien, hay riesgos comunes:
  • Falta de validación del state parameter.
  • Uso de flujos inseguros.
  • Almacenamiento inadecuado de tokens.
  • No usar PKCE (Proof Key for Code Exchange) en aplicaciones móviles/SPA.
  • Siempre implementar OAuth 2.0 con PKCE y seguir las mejores prácticas de la IETF.