¿Qué es un Tipo de Concesión?

Contexto de Autorización OAuth 2.0

Dentro del marco de la Autorización OAuth 2.0, el término "Tipo de Concesión" se refiere al método a través del cual una aplicación obtiene un token de acceso. Esencialmente, el tipo de concesión especifica el tipo de flujo de autorización que la aplicación usará para acceder a los datos del usuario.

Diferentes Tipos de Concesión en OAuth 2.0

OAuth 2.0 define varios tipos de concesión, adaptados para distintos escenarios de aplicación:

OAuth 2.0 usando LoadFocus

  1. Authorization Code:
  • Mejor para: Aplicaciones que pueden mantener seguro el secreto del cliente, frecuentemente aplicaciones del lado del servidor.
  • Flujo: El usuario es primero redirigido a un servidor de autenticación. Tras una autenticación exitosa, es redirigido de vuelta a la aplicación con un código de autorización. La aplicación intercambia este código por un token de acceso.
  1. Implicit:
  • Mejor para: Aplicaciones centradas en el agente de usuario, como aplicaciones de página única.
  • Flujo: Refleja el flujo de Authorization Code, pero el token de acceso se entrega directamente sin un código intermedio. Se considera menos seguro que el método de Authorization Code.
  1. Password (Resource Owner Password Credentials):
  • Mejor para: Aplicaciones de alta confianza, frecuentemente propiedad de la misma organización que el servidor de recursos.
  • Flujo: Los usuarios ingresan directamente su nombre de usuario y contraseña en la aplicación. La aplicación luego usa estas credenciales para obtener un token de acceso. Este flujo generalmente se desaconseja a menos que el cliente sea de alta confianza.
  1. Client Credentials:
  • Mejor para: Servicios o aplicaciones que necesitan acceder a sus propios recursos, no los de un usuario.
  • Flujo: La aplicación se autentica usando sus propias credenciales (como ID de cliente y secreto) y obtiene un token de acceso a cambio.
  1. Device Code (para dispositivos sin capacidades completas de navegador):
  • Mejor para: Dispositivos como Smart TVs, consolas de juegos o impresoras.
  • Flujo: El dispositivo se comunica con el servidor de autorización para obtener un código de dispositivo y código de usuario. El usuario ingresa el código de usuario en otro dispositivo (por ejemplo, un smartphone). Después de la verificación, el dispositivo recibe un token de acceso.
  1. Refresh Token:
  • Uso: No es un flujo independiente sino que complementa otros tipos de concesión. Cuando el token de acceso expira, un token de actualización permite a la aplicación obtener uno nuevo sin que el usuario inicie sesión nuevamente.

¿Por Qué Son Importantes los Tipos de Concesión?

Los tipos de concesión ofrecen flexibilidad para diferentes contextos de aplicación. Cada uno asegura que la obtención del token de acceso sea lo más segura posible, dadas las restricciones de la aplicación. La elección del tipo de concesión afecta las interacciones entre el cliente, el usuario y el servidor de autorización, haciendo que su selección correcta sea fundamental tanto para la usabilidad como para la seguridad.