Si alguna vez te preguntaste cómo una aplicación puede acceder a tus archivos de Google Drive sin que le entregues tu contraseña, la respuesta está en OAuth (Open Authorization) y OpenID Connect, dos protocolos estándar que resolvieron el problema de delegar acceso entre sistemas de terceros de forma segura. Esta lectura te sirve si estás aprendiendo backend, seguridad web o integraciones entre apps.
Por qué nació Open Authorization si ya existía la autenticación
La autenticación con usuario y contraseña llevaba años resuelta. El problema era otro: no había una manera confiable de otorgar acceso a los recursos de un usuario a una aplicación de terceros.
Piensa en lo que ves todos los días. Sale una app popular y, alrededor, aparecen aplicaciones que quieren consumir esos recursos. Las integraciones con Google Drive son el ejemplo clásico, porque mucha gente quiere que su app favorita guarde archivos directamente ahí. El detalle es que esos usuarios le pertenecen a Google Drive, no a la app tercera. Sin un protocolo estándar, no había forma limpia de pedir esa autorización.
¿Qué es OAuth? Es un protocolo estándar que permite a una aplicación acceder a recursos de un usuario en otro sistema, sin compartir la contraseña original. Nació con la versión 2.0 enfocado en autorización entre apps.
Cómo se entiende OAuth con la analogía del pasaporte y la visa
La mejor forma de visualizarlo es pensar en un viaje internacional. Tu pasaporte lo emite tu país y funciona como medio de identificación cuando llegas a otro lugar. El agente de migración confía en que ese documento dice quién eres, aunque no tenga acceso directo a tus datos, sobre todo con regulaciones como GDPR protegiendo la información en Europa.
Pero el pasaporte solo te identifica. No te da permiso para hacer cualquier cosa en ese país. Para eso existe la visa, que es el mecanismo de autorización. Y aquí viene lo interesante: las visas tienen permisos limitados. Hay visas para trabajar, otras para estudiar, otras solo para turismo.
En la web pasa exactamente lo mismo:
- El pasaporte equivale a la autenticación: confirma quién eres.
- La visa equivale a la autorización: define qué puedes hacer y por cuánto tiempo.
- Los permisos limitados de la visa son como los scopes de OAuth.
Esta separación es la base conceptual de por qué necesitamos dos protocolos distintos.
Por qué se creó OpenID Connect si ya existía OAuth
OAuth se volvió tan popular que los desarrolladores empezaron a usarlo también para autenticar usuarios. El problema es que OAuth no fue diseñado para autenticación, sino para autorización, y al forzarlo aparecieron problemas de seguridad.
Imagina que recibes un token que da permisos para acceder a recursos cuando lo único que querías era identificar a la persona. Estás entregando demasiado poder cuando solo necesitabas confirmar una identidad. Ese desbalance es peligroso.
De ahí nace OpenID Connect, un protocolo construido sobre OAuth que sí está diseñado específicamente para autenticar.
¿Cuál es la diferencia entre OAuth y OpenID Connect? OAuth autoriza el acceso a recursos. OpenID Connect autentica la identidad del usuario. OpenID Connect está construido sobre OAuth, así que viven en conjunto y aprender uno facilita el otro.
Qué ganas al usar protocolos estándar
Usar protocolos estándar no es un capricho. Te da tres beneficios concretos al construir software:
- Seguridad: el protocolo ya fue auditado por la industria y cubre vectores de ataque conocidos.
- Mantenimiento: cualquier desarrollador que llegue al proyecto entiende rápido cómo funciona.
- Adaptación: implementar nuevas integraciones se vuelve directo porque todos hablan el mismo idioma.
Cuando el protocolo de autorización y autenticación es estándar, tú como desarrollador no tienes que reinventar nada. Ya sabes de qué va.
Qué necesitas recordar antes de implementar OAuth y OpenID Connect
Antes de pasar a la implementación, conviene fijar las ideas centrales:
- OAuth 2.0 nació para autorizar a terceros el acceso a los recursos de tus apps.
- OpenID Connect se creó como estándar de autenticación porque OAuth no estaba pensado para eso.
- Ambos protocolos viven en conjunto y se complementan.
- La analogía pasaporte y visa te ayuda a recordar qué hace cada uno.
Un ejercicio útil para reforzar lo aprendido: investiga una alternativa a OAuth y OpenID Connect, y anota al menos una ventaja y una desventaja que tenga frente a estos protocolos. ¿Qué alternativa encontraste tú? Cuéntame en los comentarios.