Saltar al contenido principal

OAuth, o autorización abierta (Open Authorization), es un protocolo de autorización estándar abierto para la delegación de acceso. Se trata de un método seguro que permite a los usuarios conceder a los proveedores de servicios (es decir, a los sitios web y las aplicaciones) el acceso a su información sin tener que darles sus contraseñas.

OAuth proporciona a los clientes un acceso delegado seguro a los recursos del servidor en nombre del propietario del mismo. Los flujos de autorización específicos permiten al cliente acceder a los recursos protegidos sin tener que proporcionar su contraseña. En su lugar, el cliente utiliza tokens de acceso que pueden ser aprobados por el propietario del recurso para concederle acceso a ese recurso.

¿Qué son los tokens OAuth?

Los tokens OAuth autorizan el acceso de un usuario a los recursos. En otras palabras, no autentifican a los usuarios, sino que son utilizados por el proveedor de servicios para autorizar el acceso en nombre del usuario a otros recursos.

Una transacción OAuth se produce cuando un usuario solicita permiso a otro recurso utilizando su identidad de proveedor de servicios. El recurso solicitará permiso al proveedor de servicios, que se da en forma de un token de solicitud y un secreto. A continuación, el recurso redirige al usuario a su proveedor de servicios para autenticar la solicitud. En este punto, el recurso intercambia el token de solicitud por un token de acceso y un secreto. Si los dos tokens comparten el mismo secreto, el proceso de OAuth se ha completado y el usuario ha delegado con éxito el acceso del recurso al proveedor de servicios.

El proceso de OAuth

El ejemplo anterior resume un proceso general de OAuth. OAuth también permite un control y unos permisos más granulares, como el derecho a revocar los tokens cuando el usuario quiera y la definición de diferentes niveles de acceso a los proveedores de servicios para diferentes recursos.

OAuth 1.0 frente a OAuth 2.0

En 2012, se introdujo OAuth 2.0 como una importante revisión de OAuth 1.0. Los cambios realizados en esta versión de OAuth fueron lo suficientemente significativos que las versiones 2.0 y 1.0 no son compatibles. OAuth 2.0 fue diseñado para solucionar un fallo de seguridad de fijación de sesión en el flujo de autorización de OAuth.

Aunque este problema se ha resuelto con OAuth 2.0, la nueva versión no define ni admite intencionadamente el cifrado, la firma, la verificación del cliente o la vinculación del canal, sino que requiere que los implementadores utilicen un protocolo de seguridad diferente como HTTPS/TLS para ese fin.

Las diferencias entre OAuth 1.0 y 2.0 pueden resumirse a continuación:

OAuth 1.0 frente a OAuth 2.0

OAuth frente a SAML: ¿cuál es la diferencia?

SAML es una variante del lenguaje XML que describe un marco que permite a un dispositivo realizar tanto la autenticación como la autorización en nombre de uno o más dispositivos.

A medida que surgieron opciones ligeras para la codificación de datos, como JSON, OAuth fue ganando adeptos para apoyar a los usuarios de dispositivos móviles. Si bien OAuth es un protocolo más reciente que evolucionó a partir de la necesidad de sustituir a SAML, ambos protocolos son fundamentales para el inicio de sesión único (SSO) seguro.

En otras palabras, OAuth no es una alternativa a SAML, sino que ambos protocolos pueden complementarse. Por ejemplo, en un entorno SSO, SAML puede ser responsable de la autenticación (confirmar que el usuario es auténtico y se le debe conceder acceso) y OAuth será responsable de la autorización (conceder acceso a recursos protegidos específicos).