OAuth es una palabra que ha estado de moda durante cierto tiempo. Sin embargo, es difícil para un principiante aprenderlo, debido a que hay información confusa en internet. Aquí te compartimos por qué y cómo se usa, basándonos en la explicación de Devon Wijesinghe.
¿Qué es el OAuth?
El OAuth, es un estándar abierto para la autenticación y autorización basada en un token en Internet. OAuth permite que la información de la cuenta de un usuario final sea utilizada por servicios de terceros, como Facebook, sin exponer la contraseña del usuario.
Empleos de Desarrollador Fullstack.
Diferencia entre Autenticación y Autorización
OAuth 2.0 está diseñado para fines de autorización, no de autenticación. Por lo que es importante conocer la diferencia entre estos dos términos.
La autenticación, consiste en demostrar quién eres, para así poder acceder a un sistema o aplicación. Mientras que la autorización es cuando se te concede el permiso para realizar ciertas acciones permitidas.
Si lo vemos desde el punto de una aplicación web, el seguimiento de la identidad de la persona que usa la aplicación, se maneja mediante la autenticación. Los privilegios que tiene la persona, como solo ver o ver y editar, se manejan por autorización.
Terminología OAuth 2.0
Para comprender OAuth 2.0, es importante familiarizarse con la terminología utilizada en esta tecnología.
Cliente: la aplicación.
Resource owner: el usuario de la aplicación, que tiene los datos que la aplicación quiere tener.
Resource server: el sistema que contiene los datos.
Authorization server: el sistema que puede ser utilizado para solicitar y otorgar permisos.
Redirect Uri: el lugar al que se redirige al usuario cuando se le otorga permiso.
Autorización: la prueba de que el usuario ha dado permiso para acceder a los datos.
Access token: la clave utilizada para obtener los datos del servidor.
Scope: define el nivel de permisos que tiene la aplicación para manipular los datos de los usuarios.
Back Channel: canal de comunicación de servidor a servidor altamente seguro.
Front channel: navegador menos seguro / aplicación móvil para el canal del servidor.
Flujo de OAuth
Si al ingresar a una aplicación web o móvil has pasado por estos pasos donde otorgaste permiso para acceder a tus datos, entonces ya utilizaste OAuth 2.0.
Paso 1: iniciar el flujo
Cuando registres tu aplicación en Facebook o en cualquier otro OAuth 2.0, podrás obtener una identificación de cliente y un secreto de cliente. El secreto de cliente debe almacenarse de forma segura y no ser objeto de injuria al público.
Cuando el usuario dé clic en “Iniciar sesión con Facebook” en la aplicación, éste será redirigido a la página de inicio de sesión de OAuth 2.0. Esto es posible mediante el envío de una solicitud HTTPS al punto final del servidor de autorización con la identificación del cliente y algunos atributos como parámetros.
El redirect_uri es el lugar al que se redirige al usuario cuando se le otorga permiso y el client_id es lo que se obtiene de OAuth 2.0. El scope define el nivel de permisos y éstos se pueden obtener mediante la documentación de OAuth 2.0.
Paso 2: dar consentimiento
Después de que el usuario inicie sesión correctamente, se le pedirá al usuario que dé su consentimiento para permitir que tu aplicación acceda a los datos del usuario.
Paso 3: callback
Si el usuario no da su consentimiento para acceder a sus datos, el usuario será redirigido a la pantalla de inicio de sesión de la aplicación y el flujo finalizará. Por lo que la aplicación no podrá acceder a los datos del usuario.
Si el usuario da su consentimiento, el callback tendrá el código de autorización que se puede usar en el paso 4.
Paso 4: código de intercambio para un token de acceso
Una vez que obtengas el código de autorización, puedes enviarlo de vuelta al servidor de autorización y obtener el token de acceso. El back channel es un buen medio para el intercambio de token de acceso, debido a su seguridad. Por lo tanto hay dos pasos para obtener el token de acceso.
Paso 5: acceder a los datos
El token de acceso que se recibe, se utiliza para obtener los datos necesarios para su aplicación. En algunos casos puede ser la lista de amigos y el perfil del usuario.