¿Qué es OAuth (Autorización Abierta) y por qué es importante?

Las violaciones de datos son una de las mayores amenazas en una generación en rápido crecimiento y avance tecnológico. Una violación de datos puede devastar negocios, reputaciones e incluso gobiernos. Además, basta con que una única cuenta privilegiada vulnerable sea comprometida por entidades no autorizadas para que se «robe» información crítica. El mundo digital genera, comparte y almacena más datos, y las cuentas digitales son comunes.

Muchos servicios en Internet están integrados y diseñados para interactuar entre sí. Sin embargo, el uso de cuentas de servicio para acceder a aplicaciones y sitios web implica la práctica insegura de almacenar credenciales privilegiadas, principalmente sin autenticación de múltiples factores (MFA), y expone información privada a comprometer.

La importancia de la privacidad y la seguridad de los datos es increíble. En consecuencia, los estándares de seguridad abiertos como OAuth protegen la información personal y privada durante la transferencia de datos entre terceros. El estándar OAuth, compilado por la Fuerza de Tarea de Ingeniería de Internet (IETF), protege a los propietarios de recursos en la web mientras utilizan servicios de terceros. Siga leyendo para conocer más sobre OAuth.

¿Qué es OAuth?

OAuth (Open Authorization) es un marco de estándar abierto que permite el acceso de terceros a la información o activos relacionados con el usuario autenticado en servidores y servicios (como sitios web y aplicaciones) sin compartir sus credenciales de inicio de sesión. Proporciona un acceso delegado seguro a los recursos del servidor en nombre de un propietario de recursos utilizando la autenticación basada en tokens. Sin embargo, el protocolo de autenticación verifica la identidad del usuario usando contraseñas, teléfonos o identidad biométrica y no debe confundirse con el protocolo de Autorización Abierta.

A diferencia de los protocolos de autenticación como OpenID, OAuth autoriza el acceso limitado a los recursos después de una autenticación exitosa. Empresas como Facebook, Google, Amazon, Twitter, Paypal, Netflix y Microsoft permiten a sus usuarios compartir información de cuenta con sitios web y aplicaciones de terceros a través de OAuth.

El estándar de autenticación y autorización independiente de OAuth protege la información del usuario al conceder acceso a los recursos sin revelar la identidad o las credenciales del usuario. Por lo tanto, los servicios de terceros pueden solicitar en nombre del usuario sin acceder a contraseñas y otra información sensible.

El mecanismo OAuth sigue un flujo de autorización con tres componentes clave: el proveedor, el propietario/usuario y el cliente/consumidor. El proveedor de OAuth es el servidor de autorización y el motor principal de OAuth. Los servidores de recursos (APIs como Facebook o Google) usan OAuth para conectarse a un sitio web o aplicación de terceros en nombre y con la aprobación del usuario. El proveedor proporciona al servicio cliente un token de autenticación de acceso para la autorización de la información alojada por el servidor de recursos. El Usuario posee los datos/información en un servidor de recursos. El inicio de sesión del usuario confirma el intercambio de información. The Client es el sitio web o la aplicación que requiere acceso a la información o recursos del usuario.

Obtiene acceso al servidor de recursos con un token de acceso. Finalmente, el programa cliente requiere registrar con OAuth para que la autorización avance. El proceso completo de OAuth requiere múltiples aprobaciones y los tres componentes para la transacción o acceso autorizado.

OAuth 1.0

La seguridad de la información del usuario es esencial con el aumento del intercambio, almacenamiento y utilización de datos. Por lo tanto, es importante integrar normas de autorización seguras en las aplicaciones y servicios de sitios web para prevenir brechas de datos. OAuth es reconocido como el estándar de intercambio de información más seguro para sitios web y APIs. El estándar OAuth soporta múltiples flujos para abordar distintos escenarios de autorización de aplicaciones de clientes y diferentes capacidades de dispositivos. Soporta aplicaciones de servidor a servidor, aplicaciones web, aplicaciones móviles, sitios web, consolas o televisores.

El protocolo OAuth 1.0 se publicó en 2010 para derribar la ausencia de estándares abiertos para la delegación de acceso a la API. Sin embargo, fue lanzado por primera vez en 2007 como un método de autorización para la interfaz de aplicación de Twitter. El IETF lanzó OAuth 2.0 dos años después como un protocolo de autorización completamente nuevo y mejorado. Se diferencia de la primera versión con un aumento de los flujos de OAuth, tokens de corta duración e incompatibilidad hacia atrás con OAuth 1.0.

OAuth 1.0 gestionó la delegación con un marco basado en firmas digitales. Era sólido y seguro, por lo que actores importantes como Google y Twitter lo apoyaron y adoptaron. Requería implementación criptográfica e interoperabilidad criptográfica, lo que lo hacía muy seguro. Sin embargo, es un desafío para los desarrolladores implementarlo sin una experiencia adecuada en criptografía y capacidades de gestión de claves.

OAuth es generalmente un protocolo de delegación que proporciona permiso y no un protocolo de autenticación como OpenID, una capa de identidad construida sobre el protocolo OAuth 2.0. Aunque muchas aplicaciones usan OAuth 2.0 para autenticación y autorización, solo está especializado para autorización delegada. 

El marco de OAuth 2.0 

El marco de OAuth 2.0 es el protocolo estándar de la industria para la autorización. El protocolo de Autorización Abierta original reescrito proporciona una solución más completa para clientes web y no web modernos. El marco contiene especificaciones que aseguran aún más los datos del usuario. Estas incluyen:

Expiración del Token

Los tokens de OAuth son generalmente irrevocables y en la versión 1.0, no expiran. Como resultado, los tokens no son totalmente seguros y están propensos a amenazas. Con el acceso a un token o secreto de verificación, un cliente/usuario no autorizado, como hackers y sitios maliciosos, puede hacer solicitudes no autorizadas y obtener acceso a las credenciales e información personal de los usuarios. El marco de OAuth 2.0 supera esta debilidad con tokens que expiran. Una vez que el token de acceso expira, también lo hace el acceso a la aplicación a menos que se genere otro token de acceso a través del ciclo de actualización. OAuth 2.0 genera tokens de acceso «de corta duración». Estos duran entre la duración de una sesión hasta un par de semanas, pero utilizan tokens de actualización para adquirir un nuevo token de acceso en lugar de que el usuario repita todo el proceso para volver a autorizar la aplicación.

Desarrollo del lado del cliente 

OAuth 2.0 considera tanto a los clientes no basados en la web como a los flujos de trabajo web. OAuth 2.0 ofrece flujos de autorización específicos para aplicaciones web, aplicaciones de escritorio, teléfonos móviles, TVs/consolas y aplicaciones no basadas en navegador, como servicios basados en API. También es mucho más fácil de implementar, trabajar y proveer una autenticación fuerte.

Separación de Deberes

OAuth 2.0 separa los deberes de entrega de recursos y manejo de autorización de usuarios. Servidores físicamente separados, o incluso diferentes nombres de dominio, pueden manejar ambos roles. Así, cada parte del sistema escala de forma independiente. Por lo tanto, el servidor de autorización requiere el ID del cliente y el secreto, pero el servidor API solo aceptará tokens de acceso. En consecuencia, la base de datos evita compartir datos con los servidores API. Esto hace que el nuevo estándar sea más aplicable para grandes empresas. Esto se debe a que permite que estos sistemas ocurran de manera independiente, por diferentes equipos y en diferentes plazos.

Tokens de Portador y Eliminación de Requisitos Criptográficos

OAuth crea un equilibrio entre el uso fácil de las APIs y las buenas prácticas de seguridad. El uso de tokens de portador simplifica la implementación de OAuth al eliminar la complejidad de las firmas criptográficas en los estándares OAuth 1.0. OAuth 2.0 solo requiere el token en sí en la solicitud.

Autenticación de Dos Factores

OAuth utilizó el método de autenticación de un solo factor, menos seguro, para la divulgación de cuentas. Esta autenticación de un solo factor podría ser comprometida fácilmente ya que los hackers solo necesitan obtener una pieza de información para acceder. Sin embargo, OAuth 2.0 requiere más niveles de autenticación para dar acceso a un usuario. Utiliza la tokenización y un carácter de dos factores para asegurar las cuentas de los usuarios.

¿Por qué es importante OAuth?

Han surgido aplicaciones web sofisticadas, aplicaciones móviles y modelos de negocio únicos. La evolución de los casos de uso en nuevos escenarios hace que los engranajes de autorización tradicionales sean inadecuados. Muchos de estos escenarios requieren que un servidor o cliente se comunique (conecte) con varios servidores para ejecutar una solicitud o acción. Como resultado, se intensifica la necesidad de proporcionar nuevas soluciones para compartir datos e identidad federada entre múltiples partes de confianza. OAuth es un potente marco de seguridad que se esfuerza por resolver los desafíos asociados con la autorización. Por lo tanto, es importante integrar OAuth en las aplicaciones y sitios web. Aquí está el por qué:

Protege la información del servidor incluso durante el intercambio

El protocolo OAuth depende de SSL (Capa de Sockets Seguros) para garantizar que los datos entre el servidor web y el navegador permanezcan privados. De hecho, es una pieza importante en la autenticación del sitio web de cualquier organización porque protege las credenciales de los usuarios.

La tokenización permite solo un acceso limitado a los datos del usuario

Información sensible como los datos de tarjetas de crédito y registros médicos son asignados a IDs de token y almacenados de manera remota. Los comerciantes reciben los tokens, no los datos reales. Por lo tanto, la información compartida permanece privada. Terceras partes que aún no tienen acceso a sus registros médicos, contraseñas o números de tarjeta de crédito, pueden verificar el token para las transacciones.

OAuth permite el uso del inicio de sesión único (SSO)

SSO asegura un fácil acceso, controla los riesgos y otorga a los usuarios control sobre sus datos. Mejora la moral y la productividad de los usuarios permitiendo el acceso a múltiples aplicaciones con solo un juego de credenciales de inicio de sesión. Consolida las credenciales de usuario y simplifica el proceso de inicio de sesión para los usuarios. Esto elimina la complicación de administrar numerosas contraseñas o repetir la misma información al utilizar servicios en línea.

Deja en manos de los usuarios el control de lo que los servicios de terceros pueden hacer con sus recursos

Los procesos tradicionales requieren compartir las credenciales con sitios web de terceros para compartir información. Sin embargo, OAuth restringe a terceros y evita que realicen ciertas acciones nefastas, como cambiar la configuración del usuario o las credenciales del usuario, y bloquear el acceso del usuario a la cuenta.

Conclusión

OAuth (Open Authorization) protege la información del usuario de las violaciones de datos tanto como sea posible. El primer protocolo para OAuth 1.0 fue reescrito como OAuth 2.0. La industria de ciberseguridad adopta ampliamente OAuth 2.0 como la opción más segura para la autorización. Aunque no existe un sistema de autorización infalible, OAuth es uno de los mejores. Sitios como Facebook, Twitter, LinkedIn, Google, Amazon, Instagram y GitHub utilizan OAuth como su tecnología principal para la autenticación y autorización.