Cada vez más páginas webs, foros, blogs, tiendas etc. nos piden que nos registremos rellenando una y otra vez para cada sitio web todos nuestros datos. Gracias a Open Authorization (OAuth) nos podemos olvidar de tener que registrarnos una y otra vez en cada uno de los servicios que utilicemos, ya que, con un solo registro, podríamos iniciar sesión muy fácilmente en diferentes webs, sin necesidad de compartida toda nuestra identidad digital. Hoy en RedesZone os vamos a explicar cómo funciona esta tecnología.
¿Qué es OAuth?
De su acrónimo, “Open Authorization”, o “Autorización abierta” en español, es un protocolo fundamental en el ámbito de la seguridad informática y las aplicaciones web. Su propósito principal es facilitar a las aplicaciones el acceso a recursos en nombre de un usuario sin que este tenga que compartir directamente sus credenciales de inicio de sesión.
Imagina que un usuario tiene que utilizar una aplicación que necesita acceder a recursos protegidos, como información personal o archivos sensibles. En lugar de revelar sus credenciales de inicio de sesión a esa aplicación de terceros, el usuario puede utilizar OAuth como un intermediario para acceder sin necesidad de logearse con sus datos.
En el proceso de autorización de OAuth, intervienen tres procesos que son clave para su funcionamiento. En primer lugar, el usuario, que es la persona que posee la cuenta y los recursos protegidos. Por otro lado, el cliente o la aplicación, que necesita acceder a esos recursos en nombre del usuario. Y por último, el servidor de autorización, que actúa como un intermediario emitiendo tokens de acceso después de autenticar al usuario y autorizar la aplicación.
Cuando el usuario decide utilizar la aplicación, se inicia un proceso de autorización. En lugar de proporcionar su contraseña directamente, el usuario es redirigido al servidor de autorización. Aquí autentica su identidad y da permisos a la aplicación para acceder a ciertos datos o recursos. Una vez que el usuario da la autorización, el servidor de autorización emite un token de acceso a la aplicación. Este token de acceso, es la clave para que la aplicación acceda a los datos protegidos en nombre del usuario. La aplicación incluye este token en sus solicitudes al servidor de recursos que almacena los recursos protegidos. De esta manera, la aplicación puede tener acceso a la información sin conocer ni almacenar las credenciales de inicio de sesión del usuario.
Cómo nació OAuth
OAuth nació a raíz del desarrollo de Open ID para Twitter, cuando su desarrollador Blaine Cook, recibió una petición especial para ver si con Open ID podría autorizar widgets en el dashboard para acceder a sus servicios. Después de reunirse Blaine Cook, Chris Messina y Larry Halff se dieron cuenta que no existía ningún estándar de software libre para poder delegar acceso a las diferentes API.
En el año 2007, se formó el grupo de discusión de cómo debería ser lo que hoy conocemos como OAuth. Su función en aquel entonces no era otra que escribir un anteproyecto con todas las ideas y propuestas para crear un protocolo gratuito y abierto, es decir, de software libre para que cualquier empresa y usuario pudiera incorporarlo en sus webs o servicios online. Más adelante, DeWitt Clinton trabajador de Google, se enteró de la creación de dicho grupo y decidió apoyar dicho proyecto. El borrador finalmente se acabó en Julio de 2007 después de tan solo cuatro meses y en octubre de 2007 salió definitivamente el borrador Oauth Core 1.0 creando un gran cambio en el acceso a los servicios.
OAuth hoy en día es un estándar abierto que permite la autorización segura mediante el uso de un API. En la actualidad se usa desde octubre de 2012, en su versión OAuth 2.0, donde sus principales mejoras son que ahora proporciona flujos de autorización para aplicaciones web, de escritorio y teléfonos móviles. Actualmente servicios como Google, Facebook, Azure Active Directory, Github solo admiten el protocolo OAuth 2.0.
Básicamente va a permitir que compartamos información de nuestra cuenta con terceros. Es habitual hacerlo con Google o Facebook, pero también otras plataformas como hemos indicado. Esto va a facilitar el proceso y acortar los tiempos. Se considera un estándar seguro y multiplataforma.
Cómo funciona OAuth 2.0
Recordemos que OAuth 2.0 es realmente un framework de autorización, que lo que hace es permitir que las aplicaciones obtengan acceso limitado a las cuentas de usuario de algunos servicios como Facebook, Google, Twitter y GitHub. Su funcionamiento básicamente consiste en delegar el permiso de autenticación del usuario al servicio que gestiona dichas cuentas, de modo que es el propio servicio el que otorga acceso a las aplicaciones de terceros. En el protocolo OAuth se podría definir los siguientes roles para que lo entendáis mejor.
Pongamos que nos descargamos un programa o abrimos una página que nos exige tener un usuario. Tenemos la opción de registrarnos y crearnos una cuenta, pero también utilizar esta fórmula para autenticarnos. Esto último ahorrará tiempo, ya que simplemente le damos a hacer login a través de un servicio de terceros, como sería alguna de las redes sociales más populares o Google.
Lo que hace en este caso Twitter, Facebook o Google es verificar que realmente somos nosotros y ofrece nuestros datos. No tenemos que crearnos una cuenta y perder tiempo en el registro, aunque esa opción siempre esté disponible. Podremos de esta forma acelerar el proceso y poder acceder sin problemas a una página web o a un determinado programa.
Cliente
Sería la aplicación que quiere acceder a la cuenta de usuario de un determinado servicio, como Facebook, Twitter, Google, etc. Por ejemplo si instalamos una aplicación en el móvil y nos solicita permisos para ver nuestros datos en alguna de estas redes sociales o plataformas. De esta forma evitaremos tener que rellenar todo el contenido nuevamente y lo cogerá de forma automática.
Es un proceso que servirá para ahorrar tiempo y también verificar la autenticidad de un usuario. Simplemente con la cuenta de Facebook o Twitter verificaremos que somos nosotros y esa aplicación, ese cliente en definitiva, permitirá el acceso.
Usuario
El usuario es quien autoriza a la aplicación a acceder a su cuenta, mediante una ventana emergente que pide autorización, y normalmente se incluye información sobre los datos que se van a compartir al servicio nuevo. Cuando intentamos vincular cualquier programa con Facebook o Twitter, por ejemplo, tendremos que autorizar a la aplicación que pueda ceder esa información.
Es por tanto una parte importante en todo este proceso que utiliza el protocolo OAuth 2.0. Vamos a necesitar de autorizarlo para que se lleve a cabo con total garantía.
Servidor
El servidor de autorización recibe las peticiones de acceso de aplicaciones que desean usar el inicio de sesión de algunos de los servicios como Facebook, Twitter o Google por ejemplo, para iniciar sesión en alguna página web, juego, etc. Este servidor se encarga de verificar la identidad del usuario y del servicio que solicita acceso, permitiendo o denegando el acceso.
Veámoslo de forma conjunta: Lo primero que sucede es que la aplicación solicita autorización para acceder a los datos de usuario mediante el uso de alguno de los servicios que lo permiten. Seguidamente, si el usuario autoriza esa solicitud, la aplicación recibe una autorización de acceso que tiene que validar correctamente con el servidor y si es así, emite un token para la aplicación que solicitaba acceso para que pueda acceder. En caso de que, en algún paso, el usuario deniegue el acceso o el servidor detecte algún tipo de error, la aplicación no podrá acceder y mostrará un mensaje de error.
¿Cómo funciona el protocolo OAuth?
Este se trata de una solución CIAM (Consumer Identity and Access Management), que se puede utilizar para autorizar usuarios y permitir el acceso parcial de una aplicación a otra. Podemos poner el ejemplo de Google, que se integra con muchas aplicaciones diferentes como puede ser Gmail, Youtube, Blogspot, sitios de noticias, juegos, entre otros. En este caso, el protocolo OAuth es lo que hace esto posible, al permitir que todas estas aplicaciones accedan a los datos de Google. Cada vez que un nuevo servicio se agrega a la oferta de estos, de forma que se puedan usar sus datos para los accesos, se implementa con el protocolo OAuth.
En el caso de las empresas, el uso más común es entorno a los sistemas de gestión de identidades y acceso (IAM). De forma que los usuarios pueden estar autorizados para el uso de ciertas aplicaciones mediante el uso de OAuth. Podemos poner un ejemplo de un usuario que inicia sesión en el sistema con su nombre de usuario y contraseña. Este login, da acceso a todas las aplicaciones que requiere para realizar sus labores, y cada vez que accede a una, lo hace pasando por el protocolo del que hablamos.
Se trata de una función necesaria, pues debe haber un servicio que de alguna forma permita enviar información de autorización entre diferentes aplicaciones, sin exponer los datos de ningún usuario. Pero tampoco estamos hablando de un protocolo de autenticación o IDaaS, ni se debe usar para tal cometido. Para ello, existen otros servicios más adecuados.
Lo primero que debe ocurrir, es que el usuario inicie la sesión en el servicio que requiere. El funcionamiento de OAuth, empieza con un usuario final, que especifica que quiere acceder a una aplicación cliente con un acceso de terceros. La aplicación cliente, se encarga de redirigir la solicitud a un servidor que actúa de autenticador, para que el usuario pueda acceder. Luego, el servidor autoriza a la aplicación, y redirige al usuario a la aplicación con un código de un solo uso. Este código se envía al servidor de nuevo, el cual se encarga de transformarlo en un token de acceso. De tal modo, que el usuario ya puede acceder al servicio solicitado.
¿Se puede crackear?
En el caso de OAuth, lo cierto es que estamos ante un sistema que es bastante improbable que se llegue a crackear actualmente. Esto es debido a las medidas de seguridad que utiliza para las autorizaciones. Este se basa en un flujo de autorización, el cual da uso de tokens de acceso, y no contraseñas para proteger todos los recursos. Los tokens se emiten desde los proveedores de servicios destinados a la autenticación, por lo cual solo son válidos para el servicio que se autoriza y durante un tiempo limitado.
Llegar a comprometer este sistema, supondría tener que superar todas las capas de seguridad. En este campo se incluyen las necesidades de disponer de un acceso no autorizado, a los servidores del proveedor de servicios de autenticación. Y una vez dentro, descifrar los algoritmos de criptografía que utilicen para proteger los tokens. Por lo cual, podríamos decir que no es un solo sistema el que se tendría que hackear para poder alcanzar el objetivo.
En este caso, lo que podría ser el eslabón más débil de toda la cadena de funcionamiento, sería que el propio sistema se encontrará implementado de una forma errónea. Por lo general suelen ser errores de configuración, o incluso prácticas de codificación que son deficientes. Por lo cual son puntos débiles que se pueden llegar a atacar. En todo caso, se seguiría necesitando atacar el proveedor de tokens. De todos modos, no estamos ante deficiencias del protocolo OAuth en sí mismo, sino a problemas de implementación que provienen de los administradores.
Esto hace que sea de vital importancia cuidar todos los detalles de este tipo de protocolos. No todo es disponer de él y ya estar seguros, sino que desde que se empieza a implementar hasta el mantenimiento posterior es muy importante para toda la infraestructura.
¿Qué beneficios tiene para una empresa?
Como has podido ver Oauth es un estándar de seguridad muy utilizado para las autorizaciones de acceso a los datos de los usuarios. Su principal cometido, es proteger las aplicaciones web y móviles. Este permite compartir la información confidencial con otras aplicaciones, sin la necesidad de tener que revelar las credenciales de los usuarios. Por lo cual, aquí ya estamos añadiendo nuevas capas de seguridad a nuestro sistema. Lo cual siempre es bueno.
A nivel empresarial Oauth puede ser muy útil. Este da la oportunidad de simplificar los procesos de inicios de sesión, a la vez que se mejora la seguridad de los datos. Si los usuarios quieren acceder a aplicaciones en línea, pueden utilizar credenciales de otros servicios en internet, por ejemplo. Esto evita la necesidad de crear nuevas cuentas, con nuevos usuarios y contraseñas. Por otro lado, la integración con servicios externos también sufre cambios y beneficios. Será mucho más sencillo integrar cosas tales como calendarios, correo electrónico u otras herramientas de productividad. Con Oauth, todos los usuarios pueden realizar una autorización a las aplicaciones, para que estas accedan a sus datos en los proveedores de servicios online. Este es el punto donde la integración se va a simplificar mucho.
Por otro lado, algo muy importante para las empresas es la máxima seguridad. Esto nos da beneficios en este campo, ya que se podrá tener un control de todos los permisos de las aplicaciones de terceros. En todo caso, cada usuario puede generar una revocación de acceso para cesar el servicio en cualquier momento. Lo cual da más protección a la información y la privacidad de todos los usuarios. Por lo tanto, estamos ante un estándar de seguridad que es muy importante, y lo puede ser para las empresas que quieren integrar los servicios externos a su producción. Tratándose de una solución segura, flexible y muy sencilla de utilizar.
Sin lugar a dudas, este framework OAuth 2.0 es una gran ventaja en cuanto a facilidad de acceso a servicios para el usuario, pero sobre todo para todas aquellas páginas web y juegos que facilitan el acceso a sus usuarios y ganan más clientes. Os recomendamos visitar la web oficial de OAuth 2.0 donde encontraréis todos los detalles técnicos de este framework, y cómo implementarlo en vuestras páginas web para facilitar a vuestros usuarios al inicio de sesión.
El futuro se llama OAuth 2.1
Ya hemos visto todos los detalles del protocolo OAuth 2.0, pero hay que tener en cuenta que cuando nació este estándar, el último móvil de Apple era el iPhone 5, mientras que Internet Explorer lanzaba la versión 9. Es decir, que hablamos del año 2012 y aunque la propuesta ha sido firme durante años, OAuth 2.1 llega para adaptarse a las demandas actuales del desarrollo de aplicaciones.
Hay que tener en cuenta que desde entonces, el acceso móvil ha superado al de escritorio, las SPA se han convertido en la norma para aplicaciones web, y las brechas de seguridad en bases de datos de contraseñas han dejado más que claro los peligros de almacenar credenciales de usuario. Aunque OAuth 2.0 se ha ido adaptando y modificando con nuevas reglas y extensiones, se está quedando obsoleto para los requerimientos técnicos y de seguridad de las plataformas y aplicaciones que usamos hoy.
OAuth 2.1 es una especie de recopilación de todas las actualizaciones y mejoras anteriores, eliminando todo lo que ha quedado obsoleto. Por ejemplo, se han eliminado tanto Implicit Flow como Password Grant. Estas eran dos formas de autentificación de OAuth 2.0 que hoy se consideran de riesgo. Otra mejora importante es que los tokens de acceso, es decir, las credenciales que permiten a una app usar tu cuenta sin conocer las claves, no se envían a una URL de una página. Esto hace que sea mucho más complicado que sean interceptados y por lo tanto, menos vulnerables a los ataques.
La gran pregunta en este caso es por qué no se ha creado directamente OAuth 3.0 en lugar de hacer una versión 2.1. El problema es que un cambio tan grande podría llevar años en ser diseñado e implantado por las grandes empresas. Pero como trasfondo se encuentra un proyecto que está ya en marcha, llamado, TXAuth (Transactional Authorization). Este podría convertirse en OAuth 3.0 en el futuro, pero mientras tanto, OAuth 2.1 será el estándar que permita mejorar la seguridad a corto plazo. A nivel de usuario, lo cierto es que estas novedades raramente son percibidas, ya que están más destinadas a las empresas que se deben encargar de velar por la seguridad de nuestros datos y a los desarrolladores que las implantan en las diferentes aplicaciones y plataformas.