OAuth es un protocolo que permite a una aplicación acceder a recursos protegidos en nombre de un usuario, sin necesidad de que el usuario comparta sus credenciales (usuario y contraseña) directamente con esa aplicación. La historia de OAuth surge de la necesidad de evitar que plataformas como Twitter se convirtieran en un punto centralizado de gestión de identidades en la web. Originalmente, el objetivo era permitir el acceso a cuentas de usuario a través de clientes alternativos (como aplicaciones de escritorio o móviles) sin requerir contraseñas. Esto se inspiró en soluciones ya existentes, pero con la intención de estandarizarlas y mejorar la seguridad.
¿Cómo funciona? En esencia, OAuth funciona en dos partes. Primero, se comparte un 'secreto' (un token de autorización) con una aplicación 'delegada', con el consentimiento explícito del usuario. Este secreto es único para el usuario y la aplicación. Segundo, la aplicación delegada utiliza este secreto para realizar acciones en nombre del usuario, como acceder a sus contactos o publicar en su nombre. La analogía del 'magic link' de autenticación es útil para entenderlo: se envía una información confidencial a un lugar controlado por el usuario, y este demuestra que tiene control sobre ese lugar para verificar su identidad.
Casos de uso: El ejemplo más común es el 'sign-in with [Servicio]' (como 'Sign in with Google' o 'Sign in with Facebook'). Permite a un usuario iniciar sesión en una aplicación utilizando su cuenta existente en otro servicio, sin tener que crear una nueva cuenta y contraseña. También se utiliza para permitir que aplicaciones de terceros accedan a datos específicos de un usuario en una plataforma (por ejemplo, una aplicación de calendario que accede a los eventos de Google Calendar).
Consideraciones: OAuth, en su forma actual, es un conjunto complejo de especificaciones y protocolos. Aunque la idea central es simple, la implementación segura e interoperable implica una gran cantidad de detalles técnicos. Existe un debate sobre si OAuth es realmente un 'estándar' o más bien un 'marco de trabajo', lo que significa que no todas las implementaciones necesitan soportar todas las características. OpenID Connect (OIDC) se construyó sobre OAuth para proporcionar una forma estandarizada de autenticación, añadiendo funcionalidades como la identificación del usuario. Es crucial entender el propósito y la necesidad detrás de la implementación de OAuth antes de sumergirse en los detalles técnicos, para evitar que la complejidad técnica oscurezca los objetivos reales.
