OAuth (Open Authorization) es un marco de autorización basado en un estándar abierto que permite a las aplicaciones y los sitios web acceder a los recursos de otro servicio sin facilitar las credenciales de los usuarios.
Conocer los procesos que sigue OAuth es fundamental para implementarlo en aplicaciones y servicios. OAuth puede parecer muy complejo a simple vista, pero iremos paso a paso para que sea más sencillo de entender. Cada paso de este proceso estructurado ayuda a reforzar la seguridad y controlar el acceso a recursos protegidos.
Veamos cómo funciona.
1. Iniciación: el cliente pide autorización al propietario de los recursos mediante un botón para iniciar sesión u otro elemento similar de la interfaz.
2. Solicitud 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 de los recursos proporciona sus credenciales y el servidor de autorización lo autentica.
4. Concesión de autorización: una vez verificado el cliente, el servidor le concede una autorización o, lo que es lo mismo, le da permiso para utilizar los recursos.
5. Solicitud de token de acceso: el usuario envía la concesión del código de autorización al servidor y pide un token de acceso para tener la autorización propiamente dicha.
6. Emisión del token: el servidor de autorización recibe la concesión, la valida y emite un token de acceso.
7. Acceso a los recursos: el token de acceso permite al cliente visualizar y utilizar los recursos protegidos en el servidor.
8. Validación del token: el servidor verifica la validez del token antes de conceder acceso a los recursos correspondientes.
9. Renovación del token: cuando un token de acceso caduca, se puede emitir un token de renovación con el que conseguir otro token de acceso sin tener que repetir todo el proceso.
10. Revocación: los tokens de acceso y renovación se pueden revocar para retirar los permisos de acceso en un momento dado.
Las aplicaciones web empezaron a evolucionar rápidamente tras el estreno de OAuth allá por 2007, así que este protocolo no tardó en quedarse un tanto obsoleto. OAuth 2.0 se lanzó para mejorar sus funcionalidades y resolver problemas que se le escapaban a la versión original. Saber en qué se diferencian ambas versiones es fundamental para elegir la que mejor se adapte a tus necesidades.
Vamos a compararlas.
Protocolo | OAuth 1.0 | OAuth 2.0 |
Complejidad | Sus implementaciones son complejas y requieren tanto cálculos criptográficos como generación de firmas | Su diseño y su implementación son más sencillos |
Firmas | Requiere una firma criptográfica para cada solicitud | No requiere firmas porque utiliza TLS/HTTPS para la seguridad en tránsito |
Experiencia de uso | Su proceso es complicado y la autenticación consta de numerosos pasos | La autorización es más sencilla y requiere menos interacción por parte del usuario |
Tipos de tokens | Utiliza un solo tipo de token con flexibilidad limitada | Utiliza varios tipos de tokens y ofrece una mayor flexibilidad |
Tipos de clientes | Su compatibilidad con tipos de clientes es limitada | Ofrece compatibilidad con una gran cantidad de aplicaciones móviles, web y del internet de las cosas que tienen requisitos de seguridad específicos |
Autorizaciones | Tiene un único proceso de autorización | Tiene varios procesos de autorización para distintos casos de uso |
Seguridad | Sus métodos de autenticación integrados ofrecen una seguridad elevada | Requiere TLS, pero ofrece opciones de seguridad más flexibles |
Adopción y compatibilidad | Está admitido por pocas aplicaciones modernas | Está admitido por gran parte de los principales proveedores de servicios |
OAuth es clave para las funcionalidades de inicio de sesión único (SSO), ya que aporta protección, facilidades de uso y unas bases seguras para la gestión de identidades. Aunque su principal cometido es ser un protocolo de autorización, su integración con el SSO permite a los usuarios utilizar un solo conjunto de credenciales para interactuar con varias aplicaciones.
Veamos cómo funciona el SSO con OAuth.
Función en el SSO: OAuth proporciona el marco de autorización que necesita el SSO para gestionar el acceso a una plataforma.
Integración con proveedores de identidades: el protocolo trabaja en sintonía con proveedores de identidades (IdP) para verificar los datos de los usuarios y controlar la autenticación en distintos servicios.
Protocolos de federación: OAuth suele hacer tándem como protocolos como SAML y OpenID Connect para crear soluciones de gestión de identidades muy completas.
Ventajas para los usuarios: gracias al SSO con OAuth, los usuarios pueden acceder a distintos servicios sin tener que iniciar sesión una y otra vez.
Ventajas para la seguridad: OAuth centraliza la autenticación, lo cual simplifica el control de accesos y refuerza la seguridad.
Ventajas para las empresas: el protocolo OAuth permite a las organizaciones implementar soluciones de SSO que se adapten a sus necesidades en materia de seguridad.
Integración con dispositivos móviles y sitios web: la gran capacidad de adaptación de OAuth unifica las experiencias de SSO en diferentes dispositivos y plataformas.
Posibles dificultades: el SSO mediante OAuth puede plantear una serie de dificultades, como la integración con distintos proveedores de identidades y el almacenamiento seguro de tokens.
Para implementar OAuth de una manera efectiva, hay que seguir las recomendaciones que se indican más abajo y estar muy pendiente de la seguridad. Si OAuth se utiliza correctamente, los datos de los usuarios estarán a buen recaudo y habrá una confianza mutua entre tu empresa y sus clientes.
Veamos cuáles son las principales recomendaciones.
Utiliza HTTPS para todas las comunicaciones de OAuth, incluidos los URI de redireccionamiento. El motivo es que HTTPS cifra el tráfico, lo protege frente a manipulaciones e impide que terceras partes intercepten credenciales o tokens. Establece una política estricta para reforzar aún más la seguridad en tránsito.
Procura no incrustar tokens de portador en las URL, las cookies o el almacenamiento local; es decir, donde el código en el lado del cliente pueda acceder a ellos. En su lugar, almacénalos en el lado del servidor. Cífralos, utiliza controles de accesos y aplica políticas relativas a su caducidad para impedir su uso indebido si se produce una violación de seguridad.
Valida absolutamente todas las entradas en el lado del servidor para defender el sistema frente a ataques de inyección de código SQL y scripting entre sitios (XSS). Si no lo haces, pueden producirse fugas de datos o apropiaciones de cuentas.
Diseña tokens de acceso con fecha de caducidad y mecanismos de renovación para limitar su exposición. Define unas políticas claras para la renovación y la revocación de los tokens en función de tus necesidades en materia de seguridad y las preferencias de los usuarios.
Añadir una PKCE (clave de prueba para el intercambio de códigos) refuerza la seguridad en los procesos de OAuth porque se asegura de que la aplicación pueda intercambiar códigos de autorización por tokens, pero no así los atacantes. Activa la PKCE de forma predeterminada para los clientes públicos.
Almacena los datos del cliente en variables del entorno o formatos con hash, restringe el acceso a los mismos y rótalos a menudo para que haya un menor riesgo de fugas.
Evita que las respuestas a los errores contengan información delicada. Muestra mensajes genéricos a los usuarios y registra los datos de los errores en el lado del servidor para no dar información sobre posibles vulnerabilidades a los atacantes.
Haz pruebas de penetración y evalúa el código de manera periódica para detectar los problemas con OAuth cuanto antes. Presta especial atención a vulnerabilidades como el almacenamiento no seguro, las insuficiencias en la validación de las entradas, la debilidad de los tokens y el uso indebido de SSL. Si detectas alguna carencia, trabaja para solucionarla.
Cuando se descubran vulnerabilidades, actualiza a las últimas versiones parcheadas de las bibliotecas y las implementaciones de OAuth. Suscríbete a canales con información sobre las actualizaciones de seguridad relacionadas con los lenguajes y los entornos que utilizas para que la implementación de OAuth esté al día y bien protegida.
Explica a los usuarios a qué datos puede acceder tu aplicación y por qué motivo. Pídeles solo la información necesaria y ofréceles todo tipo de opciones para gestionar sus permisos con la finalidad de respetar su privacidad y ganarte su confianza.
OAuth es un componente clave de la seguridad moderna porque facilita el control de accesos y protege las credenciales de los usuarios. Las amenazas no paran de evolucionar, así que deberías plantearte la adopción de OAuth en tu empresa para mantener los datos delicados de los usuarios a buen recaudo.
La plataforma de edge cloud avanzada de Fastly lleva la seguridad de OAuth al siguiente nivel mediante la integración con los marcos de autenticación actuales. Esto permite a Fastly añadir una nueva línea defensiva sin descuidar 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 y el robo de tokens mediante un control preciso del tráfico.
Integración con el firewall de aplicaciones web (WAF): el WAF de última generación de Fastly para los pies al tráfico sospechoso y a las vulnerabilidades conocidas en el edge para proteger las API de OAuth.
Protección contra DDoS: como Fastly absorbe el tráfico malicioso antes de que llegue a tu servidor, los puntos de conexión de OAuth están protegidos frente a ataques de DDoS.
Red de distribución de contenidos (CDN) de alto rendimiento: Fastly utiliza su CDN global para almacenar en caché los datos que no son confidenciales y así agilizar las solicitudes de autenticación de OAuth.
Terminación de conexiones TLS: Fastly admite el cifrado de extremo a extremo mediante TLS para garantizar la seguridad de los tokens de OAuth durante su transmisión.
Lógica personalizada en el edge: con VCL (Varnish Configuration Language) de Fastly, las organizaciones pueden crear y poner en marcha políticas más estrictas en lo relativo a la caducidad y la renovación de los tokens de OAuth.
Visita la página del WAF de última generación de Fastly y descubre todo lo que puede hacer por la ciberseguridad de tu organización.