¿Qué es OAuth?
- Glosario IAM
- ¿Qué es OAuth?
OAuth, o Open Authorization, es un estándar abierto que permite a los usuarios otorgar acceso a aplicaciones de terceros a sus recursos sin necesidad de compartir sus credenciales de inicio de sesión. En lugar de que los usuarios expongan sus contraseñas, OAuth autoriza a aplicaciones de terceros a utilizar tokens de acceso temporales para otorgar acceso en nombre del usuario.
Por ejemplo, suponga que está utilizando una aplicación de terceros, como Mailchimp, una popular herramienta de marketing por correo electrónico, y desea importar sus contactos de Google para crear una lista de correo electrónico. En lugar de descargar y cargar manualmente cada contacto a Mailchimp, OAuth le permite conectar de forma segura su cuenta de Google a Mailchimp, otorgando acceso limitado a sus contactos sin exponer su contraseña.
OAuth o OAuth 2.0: ¿cuál es la diferencia?
OAuth, o OAuth 1.0, requiere que cada solicitud de autorización se firme con una firma criptográfica. Esto significa que la aplicación de terceros debe firmar la solicitud con una clave secreta compartida, que el servidor de autorización debe replicar para verificar la solicitud. Mientras que las firmas criptográficas aseguran que la solicitud no haya sido alterada, no cifran los datos, por lo que son vulnerables a ser interceptados o robados durante el tránsito.
OAuth 2.0 simplifica el proceso de autorización al sustituir las firmas criptográficas por cifrado HTTPS, proporcionando una transmisión segura de datos de extremo a extremo. OAuth 2.0 utiliza tokens de acceso de corta duración y tokens de actualización para mejorar la seguridad al minimizar la exposición de los tokens. También ofrece una mayor flexibilidad al admitir varios flujos de autorización diferentes según el tipo de aplicación, como aplicaciones web, aplicaciones móviles y comunicación de servidor a servidor.
| Función | OAuth 1.0 | OAuth 2.0 |
|---|---|---|
| Seguridad | Emplea firmas criptográficas con una clave secreta compartida para cada solicitud. Previene la manipulación pero no la interceptación. | Utiliza cifrado HTTPS/TLS para la transmisión segura de datos de extremo a extremo |
| Sistema de tokens | Tipo de token único sin expiración estándar | Emplea tokens de acceso de corta duración y tokens de actualización para mayor seguridad |
| Verificación de solicitudes | Tanto la aplicación como el servidor deben generar firmas coincidentes para verificar las solicitudes | TLS maneja el cifrado y la verificación de las solicitudes |
| Flujos de autorización | Flujo único para todos los casos de uso | Múltiples flujos que admiten diferentes tipos de aplicaciones (web, móvil, servidor a servidor) |
| Complejidad de la implementación | Complejo debido a los requisitos de firmas criptográficas | Implementación más sencilla debido a la dependencia de HTTPS |
| Uso moderno | Menos común en aplicaciones modernas | Estándar de la industria para aplicaciones modernas |
| Compromiso de seguridad | Capa de seguridad de firma adicional pero más compleja | Se basa en la seguridad TLS pero es más sencillo de implementar correctamente |
| Recomendado para | Sistemas heredados que requieren verificación de firmas | La mayoría de las aplicaciones y API modernas |
Si bien tanto OAuth como OAuth 2.0 son opciones prácticas, se recomienda OAuth 2.0 porque es más fácil de implementar y se usa con más frecuencia en aplicaciones modernas.
Cómo funciona OAuth
Aquí tiene una guía paso a paso sobre cómo funciona OAuth 2.0 utilizando el flujo de concesión de código de autorización:
- El usuario inicia la autorización: Un usuario desea conceder a una aplicación de terceros (denominada cliente) acceso a sus recursos alojados en un servidor. Esto suele comenzar cuando el usuario hace clic en un botón como "Iniciar sesión con Google" o "Conectarse a GitHub" en la aplicación cliente.
-
El cliente solicita autorización:
El cliente redirige al usuario al punto final de autorización del servidor de autorización. La solicitud incluye parámetros:
client_id,redirect_uri,response_type=code,scopeystate(para protección CSRF). A continuación, se le puede pedir al usuario que se autentique (si aún no ha iniciado sesión) y apruebe o rechace el acceso solicitado. -
Se concede la autorización: Si el usuario aprueba la solicitud, el servidor de autorización redirige el navegador del usuario al
redirect_uridel cliente. Se incluye un código de autorización en la URL junto con el parámetrostate, que el cliente debe verificar para asegurarse de que la solicitud no se manipuló ni interceptó. -
El cliente solicita un token de acceso:
El cliente envía una solicitud al punto final de token para intercambiar el código de autorización por tokens. Esta solicitud debe incluir:
authorization_code,client_id,client_secret(si corresponde),redirect_uri(debe coincidir con la solicitud original) ygrant_type=authorization_code. - El cliente recibe tokens de acceso y de actualización: Si se valida la solicitud, el servidor de autorización emite un token de acceso para autenticar las solicitudes de la API y un token de actualización para obtener nuevos tokens de acceso cuando expira el actual. El cliente almacena esos tokens de forma segura y usa el token de acceso en las solicitudes de la API.
-
El cliente usa el token de actualización:
Cuando expira el token de acceso, el cliente puede solicitar uno nuevo enviando una solicitud de token de actualización al punto final de token. Para obtener un nuevo token de acceso, el cliente debe enviar una nueva solicitud al punto final de token con los siguientes criterios:
client_id,client_secret,refresh_token, ygrant_type=refresh_token.
Ventajas de OAuth
El uso de OAuth ofrece varias ventajas, como reducir el riesgo de robo de credenciales, mejorar la experiencia del usuario y habilitar el inicio de sesión único (SSO).
Reduce el riesgo de robo o uso indebido de credenciales
OAuth elimina la necesidad de que los usuarios compartan sus credenciales directamente con aplicaciones de terceros. En su lugar, depende de un servidor de autorización para administrar el acceso, lo que reduce de forma significativa el riesgo de exposición de credenciales, especialmente en caso de una violación de datos. OAuth 2.0 emplea tokens de acceso de corta duración que otorgan acceso limitado a los recursos durante un tiempo específico. Estos tokens pueden ser revocados por el usuario en cualquier momento, asegurando que el acceso permanezca temporal y bajo el control del usuario.
Mejora la experiencia del usuario
OAuth simplifica la experiencia del usuario al permitirles acceder a múltiples cuentas y recursos usando sus cuentas existentes, eliminando la necesidad de crear nombres de usuario y contraseñas distintos para cada servicio. Esto acelera el acceso y reduce la molestia de gestionar múltiples conjuntos de credenciales de inicio de sesión.
Habilita el inicio de sesión único (SSO)
OAuth habilita el inicio de sesión único al permitir que los usuarios inicien sesión una vez con un proveedor de servicios de confianza y, luego, usen varias aplicaciones sin volver a ingresar las credenciales. Siempre que el usuario permanezca conectado al proveedor, puede usar sin problemas otras aplicaciones conectadas a la misma cuenta. Por ejemplo, un usuario que inició sesión en Google también puede acceder a aplicaciones que dependen de Google para la autenticación.
Desventajas de OAuth
A pesar de sus ventajas, OAuth presenta algunos riesgos de seguridad, como la posibilidad de que los tokens se vean comprometidos si no se almacenan o transmiten de manera segura, y que los usuarios aún puedan ser vulnerables a ataques de phishing.
Los tokens pueden verse comprometidos si no se almacenan de forma segura
Los tokens de acceso y los tokens de actualización son objetivos valiosos para los ciberdelincuentes porque proporcionan acceso directo a los datos y recursos de los usuarios. Si los tokens se almacenan incorrectamente, los actores de amenazas pueden comprometerlos, lo que puede provocar accesos no autorizados y cuentas comprometidas.
Los tokens pueden verse comprometidos si no se transmiten de forma segura
Si los tokens se envían a través de una conexión no segura, como el uso de HTTP en lugar de HTTPS, pueden ser interceptados por un ataque de intermediario (MITM). Una vez comprometido, se puede usar un token para obtener acceso no autorizado a los recursos de un usuario.
Susceptible a ataques de phishing
OAuth se basa en redirigir a los usuarios a un servidor de autorización para otorgar permisos, pero este proceso puede explotarse en ataques de phishing. En un ataque de phishing, un atacante hace que los usuarios ingresen credenciales en una página de inicio de sesión falsa que se parece al servidor de autorización legítimo. Si los usuarios no notan la diferencia, es posible que ingresen sus credenciales sin saberlo, lo que les da a los atacantes acceso a cuentas y datos confidenciales.