Introducción a OAuth 2.0: De Cero a Entender el Flujo Completo
Introducción a OAuth 2.0: De Cero a Entender el Flujo Completo
El flujo del proceso de OAuth puede ser confuso de entender, con múltiples partes móviles y una gran cantidad de terminología.
Intentemos aclarar las cosas en esta introducción a OAuth 2.0.
Entonces, ¿qué es OAuth?
OAuth significa Autorización Abierta (Open Authorization). Es un framework de autorización que permite a las aplicaciones obtener un acceso limitado a las cuentas de usuario.
Esto te ayuda a usar OAuth para construir el flujo de autenticación de tu aplicación.
Por ejemplo, considera que estás desarrollando una aplicación web y quieres implementar una funcionalidad de inicio de sesión para los usuarios. En lugar de desarrollar tu propio servidor de autenticación y gestionar contraseñas, puedes usar un servicio como Google o Github para la autenticación.
Entonces, ¿cómo funciona?
Terminología de OAuth
Primero, necesitamos entender a los principales actores involucrados en el proceso de OAuth.
1 – Resource Owner (Propietario del Recurso)
Este es el usuario que va a iniciar sesión en tu aplicación.
El usuario puede tener una cuenta de Google, y esto lo convierte en el propietario de la información de su cuenta.
2 – Client (Cliente)
El cliente es la aplicación web que estás construyendo.
Esta aplicación quiere acceder a la información de la cuenta del usuario (como su nombre) y autenticarlo sin tener que preocuparse por las contraseñas.
En otras palabras, al cliente le parece bien que alguien como Google o GitHub autentique al usuario.
3 – Resource Server (Servidor de Recursos)
Este es el servidor que aloja la información de las cuentas de los usuarios de forma protegida.
Para nuestro ejemplo, este sería un servidor propiedad de Google que almacena la información de las cuentas.
4 – Authorization Server (Servidor de Autorización)
El trabajo del servidor de autorización es verificar la identidad del usuario y emitir un token de acceso a la aplicación.
Nuevamente, este servidor pertenece a Google.
El Flujo del Proceso de OAuth 2.0
Con claridad sobre los diversos roles de OAuth, es hora de entender el flujo básico o abstracto de OAuth.
PASO 1: Registrar la aplicación
Para usar OAuth con tu aplicación web, primero debes registrar tu aplicación con el proveedor de OAuth (como Google). Esto se hace a través de un formulario de registro en el portal de desarrolladores de Google.
Proporcionas información como:
Nombre de la aplicación
Sitio web
URL de Callback (Redirección)
Después del registro, normalmente obtienes dos cosas:
Client ID (ID de Cliente)
Client Secret (Secreto del Cliente)
Ambos valores se utilizan para autenticar tu aplicación web ante Google.
PASO 2: Iniciar el flujo de autorización
El usuario quiere acceder a tu aplicación web y tú quieres autenticarlo. Para facilitar esto, tu aplicación web proporciona un enlace de código de autorización al usuario (por ejemplo, un botón de «Iniciar sesión con Google»).
PASO 3: Consentimiento del usuario
Cuando el usuario hace clic en el enlace, Google le pedirá que inicie sesión para autenticar su identidad. Una vez que lo haga con éxito, Google le pedirá al usuario que autorice o deniegue el acceso de tu aplicación web a la información de su cuenta.
Esto se hace mostrando una pantalla de consentimiento donde el usuario puede confirmar qué tipo de acceso se está solicitando.
PASO 4: Redirección con el código de autorización
Una vez que el usuario autoriza en la pantalla de consentimiento, Google lo redirige a la URL de Callback que proporcionaste en el PASO 1. Al redirigir, también envía un código de autorización.
PASO 5: Intercambio del código por un token de acceso
La aplicación web utiliza el Código de Autorización para obtener un token de acceso del Servidor de Autorización.
El servidor verifica si el código de autorización es válido y envía una respuesta que contiene el token de acceso y un token de actualización (opcional).
Con esto, la aplicación está completamente autorizada. Utiliza el token de acceso para obtener los detalles de la cuenta del usuario. El mismo token se puede usar varias veces hasta que expire.
Ten en cuenta que existen más aplicaciones y flujos compatibles con el estándar OAuth. Sin embargo, el que hemos discutido es el más utilizado para fines de autenticación.
Link de referencia: Intro to OAuth 2