OAuth 2.0, autorizando el uso de recursos

OAuth 2.0 tal y como se define en el RFC 6749 es aquél framework de autorización que permite a la aplicación de un tercero obtener un acceso limitado a un cierto servicio http, lo que comúnmente llamamos un API.

El framework de autorización OAuth, establece un conjunto de roles entre los que se deben orquestar los procesos necesarios para establecer si finalmente un cliente tiene los permisos para acceder a un recurso.

Los roles definidos son el cliente que consume un recurso, el servidor donde se halla este recurso, el dueño del recurso que va a ser consumido y aquel servidor que autoriza el consumo del recurso.

Roles en OAuth

En un ejemplo típico, el cliente podría ser aquella web a la que accedo y en lugar de crear una nueva cuenta me permite usar mi credencial de Facebook. El servidor del recurso puede ser Facebook también. El dueño del recurso sería yo mismo.  Y por último el servidor de autorización sería el de facebook.com.

¿Cómo se establece el diálogo entre los distintos actores para finalmente autorizar el uso a un cierto cliente?

La web a la que accedo va a pedir al dueño del recurso, en el ejemplo sería yo mismo, autorización para usar la información. En este paso normalmente se determina el nivel de autorización, si sólo voy a permitir el acceso en mi nombre, o si permito que se acceda a más información de mi perfil. Si concedo permiso a utilizar mis credenciales, al final la aplicación cliente va a presentar un token de acceso al servidor del recurso para que pueda acceder a esta novedosa web.

Es importante notar la presencia de un token de autorización, este token puede ser almacenado por la aplicación cliente y ahorrar al usuario final ( que podría ser una aplicación ) de tener que hacer login cada vez que quiera acceder ( usaría el login de facebook. Simplificamos el proceso de registro, a cambio de hacer concesiones a un tercero.