OAuth 2.0 ofrece varios tipos de permisos para acomodarse a varios escenarios y tipos de clientes. Estos tipos definen cómo la aplicación puede obtener un token de acceso para acceder a recursos protegidos en nombre del dueño del recurso. En esta tarea, veremos 4 tipos de permiso OAuth 2.0.


Authorization Code Grant

Este es el flujo OAuth más usado que se ajusta a las aplicaciones del lado del servidor (PHP, JAVA; .NET, etc). En este flujo el cliente redirige al usuario al servidor de autorización, donde el usuario se autentifica y concede la autorización. El servidor entonces redirige al usuario al cliente con el código de autorización. El cliente intercambia dicho código por un token de acceso pidiéndoselo al endpoint del token del servidor de autorización.

OAuth Grant Types

Es conocido por ensalzar la seguridad, ya que el código de autorización es intercambiado por un token de acceso server-to-server, por lo que el token no es expuesto mediante el user agent (navegador), reduciendo el riesgo de filtración de token. También soporta usar tokens de refresco.


Implicit Grant

Está principalmente diseñado para aplicaciones web y móviles donde los clientes no pueden guardar secretos de forma segura. Emite directamente el token de acceso al cliente sin requerir la autorización de un código externo. En este flujo, el cliente redirige al usuario al servidor de autorización. Después de que el usuario se autentifique y le de autorización, el servidor de autorización devuelve un token de acceso en el fragmento URL. El flujo es así:

OAuth Grant Types

Este tipo de permiso está simplificado y es adecuado para clientes que no pueden guardar secretos de forma segura. Es más rápido ya que incluye menos pasos que el authorization code grant. Sin embargo, es menos seguro ya que el token de acceso está expuesto en el user agent y puede ser registrado por el historial del navegador. Además no soporta tokens de refresco.


Resource Owner Password Credentials Grant

Se usa cuando el cliente es altamente confiado por el dueño del recurso, como las aplicaciones first-party. El cliente colecciona las credenciales del usuario directamente y las intercambia por un token de acceso como se muestra debajo.

OAuth Grant Types

En este flujo, el usuario ofrece sus credenciales directamente al cliente. El cliente manda las credenciales al servidor de autorización el cual verifica las credenciales y emite un token de acceso. Este tipo de permiso es directo, requiriendo menos interacciones, haciéndolo adecuado para aplicaciones altamente confiables donde el usuario está seguro de dar sus credenciales. Sin embargo, es menos seguro porque incluye compartir las credenciales directamente con el cliente y no es sostenible para aplicaciones de terceros.


Client Credentials Grant

Se usa para las interacciones server-to-server sin intromisión del usuario. El cliente usa sus credenciales para autentificarse con el servidor de autorización y obtener un token de acceso. En este flujo el cliente se autentifica con el servidor de autorización usando sus credenciales, y el servidor de autorización emite un token de acceso directamente al cliente como se ve aquí abajo:

OAuth Grant Types

El adecuado para servicios backend y comunicaciones servidor a servidor ya que no incluye credenciales de usuario, por lo que reduce los riesgos de seguridad relativos a la exposición de datos del usuario.