¿Qué es OAuth?

OAuth (Open Authorization) es un marco de autorización basado en un estándar abierto que permite a una aplicación o sitio web acceder de forma segura a los recursos de otro servicio sin compartir las credenciales de un usuario.

¿Cómo funciona OAuth?

Comprender el flujo de trabajo de OAuth es esencial para implementarlo de forma eficaz en tus aplicaciones y servicios. Aunque OAuth pueda parecer complejo a primera vista, desglosarlo en pasos hace que sea mucho más fácil de entender. Cada etapa de este proceso estructurado ayuda a reforzar la seguridad y proporciona un control de permisos sobre los recursos protegidos.

Así es como funciona: 

1. Inicio: El cliente solicita autorización al propietario del recurso mediante un botón de inicio de sesión o un elemento similar de la interfaz.

2. Petición de autorización: el cliente redirige al propietario de los recursos al servidor de autorización para que indique sus datos de inicio de sesión.

3. Autenticación: el propietario del recurso proporciona sus credenciales y es autenticado por el servidor de autorización.

4. Concesión de autorización: tras verificar al cliente, el servidor concede una autorización al cliente para simbolizar el permiso de uso de los recursos.

5. Petición de token de acceso: El usuario envía la concesión del código de autorización al servidor y solicita un token de acceso para establecer la autorización adecuada. 

6.Emisión de tokens: al recibir la concesión, el servidor de autorización la valida y emite un token de acceso.

7. Acceso a recursos: Con el token de acceso, el cliente ahora puede ver y utilizar de forma segura los recursos protegidos del servidor. 

8. Validación de token: el servidor debe verificar la validez de un token antes de conceder acceso a los recursos solicitados. 

9. Proceso de actualización: cuando un token de acceso caduca, puedes obtener un token de renovación que te permite conseguir otro token de acceso sin pasar por todo el proceso.

10. Revocación: Los tokens de acceso y renovación se pueden revocar para retirar los permisos de acceso si es necesario.

OAuth frente a OAuth 2.0

Tras el lanzamiento de OAuth en 2007, las aplicaciones web evolucionaron rápidamente y pronto el protocolo pareció quedarse algo anticuado. OAuth 2.0 se lanzó para mejorar y abordar problemas que el protocolo anterior no podía resolver. Comprender en qué se diferencian ambas versiones es fundamental para elegir la que mejor se adapte a tu caso de uso.

Aquí tienes una comparación de las dos versiones: 

Funcionalidad

OAuth 1.0

OAuth 2.0

Complejidad

Sus implementaciones son complejas y requieren cálculos criptográficos y generación de firmas

Tiene un diseño de protocolo sencillo y una implementación más directa

Firmas

Requiere una firma criptográfica para cada petición

Como utiliza TLS/HTTPS para la seguridad del transporte, no necesita firmas

experiencia de usuario

Su proceso es complicado y la autenticación consta de pasos adicionales

Su flujo de autorización es ágil y requiere poca interacción del usuario

Tipos de tokens

Utiliza un solo tipo de token con flexibilidad limitada

Tiene varios tipos de token, lo que ofrece una mayor flexibilidad

Tipos de clientes

Su compatibilidad con diversos tipos de clientes es limitada

Ofrece una amplia compatibilidad con aplicaciones web, móviles y del internet de las cosas que tienen necesidades de seguridad específicas

Autorización

Flujo único de autorización

Tiene varios procesos de autorización para distintos casos de uso

Cuestiones de seguridad

Sus métodos de firma integrados ofrecen una mayor seguridad

Requiere la implementación de seguridad de la capa de transporte (TLS), pero ofrece opciones de seguridad más flexibles

Adopción y compatibilidad

Pocas aplicaciones modernas admiten

Compatible ampliamente con los principales proveedores de servicios


OAuth y el inicio de sesión único (SSO)

OAuth es clave para las funcionalidades de inicio de sesión único (SSO), ya que aporta seguridad y comodidad, y proporciona una base segura para la gestión de identidades. Aunque actúa principalmente como un protocolo de autorización, su integración con el SSO permite a los usuarios interactuar con varias aplicaciones con un solo conjunto de credenciales.

Veamos cómo funciona el SSO con OAuth:

  • El papel de OAuth en el SSO: OAuth proporciona el marco de autorización en el que se basa el SSO para gestionar el acceso a la plataforma. 

  • Integración con proveedores de identidades: El protocolo funciona junto con proveedores de identidades (IdP) para verificar los datos del usuario y gestionar la autenticación en distintos servicios. 

  • Protocolos de federación: OAuth suele combinarse con protocolos como SAML y OpenID Connect para formar soluciones integrales de gestión de identidades.

  • Ventajas de la experiencia de usuario: Con el SSO basado en OAuth, los usuarios acceden rápidamente a varios servicios sin tener que iniciar sesión repetidamente, lo que mejora la comodidad.

  • Ventajas de seguridad: OAuth simplifica el control de accesos y refuerza la seguridad al centralizar la autenticación.

  • Aplicaciones Enterprise: El protocolo OAuth permite a las organizaciones implementar soluciones de SSO que satisfacen sus necesidades específicas de seguridad. 

  • Integración móvil y web: Gracias a su adaptabilidad, OAuth permite experiencias de SSO coherentes en varios dispositivos y plataformas.

  • Retos y consideraciones: la implementación de SSO mediante OAuth puede plantear una serie de dificultades, como la integrar con distintos proveedores de identidades y el almacenamiento seguro de tokens.

10 mejores prácticas para implementar OAuth

La implementación correcta de OAuth requiere seguir las prácticas recomendadas y prestar mucha atención a la seguridad. La ejecución adecuada de OAuth garantiza la seguridad de los datos de los usuarios y mantiene la confianza entre tu empresa y sus clientes. 

Estas son algunas de las prácticas recomendadas esenciales que debes seguir:

1. Utilizar comunicaciones seguras

Utiliza HTTPS para todas las comunicaciones de OAuth, incluidos los URI de redireccionamiento. HTTPS cifra el tráfico, lo protege frente a manipulaciones e impide que terceras partes intercepten credenciales o token. Establece una política estricta de seguridad del transporte para reforzar este nivel de protección.

2. Implementar un almacenamiento de tokens adecuado

Evita incrustar token de portador en URL, cookie o almacenamiento local donde el código del lado del cliente pueda acceder a ellos. En su lugar, almacena los token en el servidor con el cifrado, los controles de acceso y las políticas de caducidad adecuados para evitar un uso indebido si se produce una vulneración.

3. Validar todas las entradas

Valida exhaustivamente todos los valores de entrada en el lado del servidor para defenderte frente a ataques como la inyección SQL y el scripting entre sitios (XSS). Las entradas no validadas pueden provocar violaciones de la seguridad o apropiaciones de cuentas.

4. Utilizar tokens de acceso de corta duración

Diseña tokens de acceso con fecha de caducidad y mecanismos de renovación para limitar la exposición. Define unas políticas claras para la renovación y la revocación de los tokens en función de tus necesidades de seguridad y las preferencias de los usuarios. 

5. Implementar una PKCE

PKCE (Proof Key for Code Exchange) añade un nivel de seguridad a los flujos de OAuth, lo que garantiza que solo tu aplicación —y no los atacantes— pueda intercambiar códigos de autorización por token. Activa la PKCE de forma predeterminada para los clientes públicos.

6. Proteger los secretos del cliente

Almacena los secretos de cliente en variables de entorno o formatos con hash, restringe el acceso a los mismos y rótalos periódicamente para reducir el riesgo de filtraciones.

7. Reforzar la gestión de errores

Evita exponer información confidencial en las respuestas a errores. Devuelve mensajes genéricos a los usuarios y registra los detalles de los errores en el lado del servidor para evitar que los atacantes obtengan información sobre posibles vulnerabilidades.

8. Auditorías de seguridad periódicas

Haz pruebas de penetración y auditorías de código de manera periódica para detectar de forma proactiva cualquier problema con OAuth. Comprueba si hay vulnerabilidades como almacenamiento no seguro, validación de entradas insuficiente, poca solidez de los token, uso inadecuado de SSL, etc. Identifica y corrige las deficiencias.

9. Mantente al día

A medida que se descubran vulnerabilidades, actualiza a las últimas versiones parcheadas de las bibliotecas y las implementaciones de OAuth. Suscríbete a canales de actualizaciones de seguridad de tus lenguajes de programación y marcos para mantener tu implementación de OAuth actualizada y segura. 

10. Ser transparente con los usuarios

Explica a los usuarios a qué datos puede acceder tu aplicación y por qué motivo. Pide solo la información necesaria y ofrece opciones de permisos granulares para respetar la privacidad de los usuarios y mantener su confianza.

Mejora la seguridad de OAuth con Fastly

OAuth es un componente clave de la seguridad web moderna que permite un acceso delegado y seguro, al tiempo que mantiene la seguridad de las credenciales de usuario. Con la evolución constante de las ciberamenazas, deberías plantearte implementar OAuth en la empresa para proteger los datos sensibles de los usuarios. 

La avanzada plataforma de edge cloud de Fastly refuerza la seguridad de OAuth al integrarse con los marcos de autenticación existentes de tu empresa. Esta facilidad de integración permite a Fastly proporcionar un nivel adicional de protección sin dejar de mantener el rendimiento. 

Veamos algunas de las funcionalidades y las ventajas que ofrece Fastly.

  • Control del tráfico en tiempo real: la plataforma en el edge de Fastly supervisa el uso de tokens de OAuth y previene amenazas como la reutilización o el robo de tokens mediante un control preciso del flujo de tráfico. 

  • Integración de cortafuegos de aplicación web (WAF): WAF de última generación de Fastly protege las API de OAuth bloqueando el tráfico sospechoso y las vulnerabilidades conocidas en el edge.

  • DDoS Protection: Fastly absorbe el tráfico malicioso antes de que llegue a tu servidor, protegiendo los puntos de conexión de OAuth frente a ataques de DDoS

  • Rendimiento de la red de distribución de contenidos (CDN): Fastly acelera las peticiones de autenticación de OAuth almacenando en caché los datos no sensibles, ya que utiliza una red de distribución de contenidos global.

  • Terminación de seguridad de la capa de transporte (TLS): Fastly admite el cifrado de extremo a extremo mediante seguridad de la capa de transporte (TLS), lo que garantiza que los token de OAuth sigan siendo seguros durante la transmisión.

  • Lógica edge personalizada: Con Varnish Configuration Language de Fastly (Varnish Configuration Language), las organizaciones pueden crear e implementar políticas más estrictas para los tokens de OAuth, como controles de caducidad y renovación de tokens.

Visita el sitio web para descubrir cómo el WAF de última generación de Fastly mejorará la seguridad web de tu organización.

¿Listo para empezar?

Ponte en contacto con nosotros