¿Qué es OAuth?
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
Paso 1
Solicitar acceso
Ana hace una solicitud en YouTube (recurso) para publicar vídeos directamente en su Twitter (proveedor de servicios). A continuación, YouTube pide permiso a Twitter para acceder.
Paso 2
Solicitud de intercambio de token y secreto
Twitter proporciona a YouTube un token de solicitud y un secreto.
Paso 3
Autenticación
YouTube redirige a Ana a Twitter para que se conecte. Ana proporciona a Twitter sus credenciales de acceso y autentifica que la solicitud de YouTube la inició el usuario.
Paso 4
Intercambio de token de acceso
Una vez que el usuario autentica la solicitud, YouTube le pide a Twitter que intercambie el token de solicitud y el secreto por un token de acceso. Si los secretos asociados a los tokens coinciden, Twitter proporcionará a YouTube el token de acceso y concederá el acceso a YouTube.
Paso 5
Acceso concedido
Ahora Anne puede utilizar de forma segura YouTube para publicar vídeos directamente en su Twitter.
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 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).