OAuth 1.0 frente a OAuth 2.0
Introducción a OAuth
Consideremos OAuth como la llave de valet de un automóvil. A diferencia de una llave regular que le permite al titular acceso ilimitado, un valet usa esta llave de valet solo para dar una vuelta temporal al automóvil sin tener acceso a la guantera o al baúl. OAuth permite que la información de la cuenta de un usuario final sea utilizada por servicios de terceros como Amazon, Facebook, Google, Instagram, LinkedIn, Netflix, Paypal, Microsoft, Twitter, etc. Estas empresas trabajan con muchas aplicaciones de terceros y con frecuencia permiten a los usuarios compartir sus credenciales dentro de aplicaciones como sitios web de noticias, plataformas de blogs, videojuegos en línea, etc.
Por ejemplo, al iniciar sesión en otra aplicación en Facebook, un usuario puede hacer clic en el botón de inicio de sesión de Facebook. Luego, Facebook los autentica automáticamente y el sitio web les otorga acceso con permiso de Facebook. OAuth también se usa para la autenticación de correo electrónico, como Gmail, en la que un servicio web obtiene acceso a recursos protegidos dentro de otro dispositivo, lo que permite al usuario acceder a dos servicios diferentes con un solo inicio de sesión.
Versión de OAuth:
OAuth 2.0 es un marco completamente reescrito de OAuth 1.0, y la versión 1.0 se considera un protocolo que usa terminología y términos diferentes. La principal diferencia en la función es cómo ambas versiones clasifican las funciones y la experiencia del usuario final.
OAuth 1.0 tiene un consumidor, un proveedor de servicios y un usuario, y no separa explícitamente las funciones del servidor de recursos y el servidor de autorización.
Por otro lado, OAuth 2.0 tiene un cliente, un servidor de autorización, un servidor de recursos y un propietario de recursos. Es por eso que estas versiones no tienen compatibilidad con versiones anteriores. OAuth 2.0 ofrece flujos de autorización específicos para aplicaciones web, aplicaciones de escritorio, teléfonos móviles, dispositivos inteligentes y aplicaciones no basadas en navegador, como los servicios basados en API.
Autenticación automática 1.0
⇒ el usuario A quiere que la aplicación 1 acceda a los datos en la aplicación 2
⇒ Solicitud de envío de la aplicación 1 para conectarse con la aplicación 2 iniciada por el usuario A
⇒ La aplicación 2 acepta la solicitud de la aplicación 1
⇒ La aplicación 2 envía un token temporal a la aplicación 1
⇒ La aplicación 1 redirige al usuario A para que inicie sesión o también se pueden usar direcciones URL preformateadas
⇒ Después de que el usuario A se autentique con éxito en la aplicación 1, la aplicación 1 solicita la aprobación del usuario A para otorgar permiso a la aplicación 2 para acceder a los recursos de la aplicación 2
⇒ Al otorgar la aprobación se informa a la App 1
⇒ La aplicación 1 solicita a la aplicación 2 un nuevo token de acceso usando un token temporal
⇒ La aplicación 2 aprueba la solicitud y envía un nuevo token de acceso
⇒ La aplicación 1 ahora puede acceder a los datos de la aplicación 2 usando un nuevo token de acceso

Autenticación automática 2.0
⇒ el usuario A quiere que la aplicación 1 acceda a los datos en la aplicación 2
⇒ La aplicación 1 solicita acceso a la aplicación 2 desde el servidor de autorización
⇒ el usuario A se autentica en el servidor de autorización con esta credencial recibida en el paso anterior y devuelve la concesión de autorización a la aplicación 1 para acceder a los datos en la aplicación 2
⇒ Ahora, la aplicación 1 solicita el token de acceso del servidor de autorización utilizando la concesión de autorización que el usuario A dio en el paso 3 anterior
⇒ El servidor de autorización valida la solicitud y envía un token de acceso a la aplicación 1
⇒ La aplicación 1 ahora puede acceder a los datos de la aplicación 1 con el token de acceso

¿Por qué OAuth 2.0?
- Mejor soporte para aplicaciones sin navegador
- La separación de roles
- El token de acceso de corta duración y el token de actualización
- Complejidad reducida en la firma de solicitudes