oauth-2-clicko-informatica-programacion

Oauth, como dicen en su página oficial es un framework de autorización. ¿Qué quiere decir esto? Que es un framework preparado para mejorar la seguridad y la forma de entrar y obtener un recurso del servidor, dejando de lado el conocido método de usuario-contraseña.

En los últimos años, con el auge de los servicios web y del uso de las APIs, y el interés por parte de las empresas en incorporar plataformas que ofrezcan o consuman servicios de todo tipo a través de internet en sus organizaciones, surge la necesidad de securizar las APIs.

Estrategia de securización de APIs

Esta debe encontrar el equilibrio entre la seguridad y la usabilidad. Una estrategia demasiado compleja disuade a usuarios con malas intenciones, pero también obstaculiza el uso por parte de usuarios legítimos.

El uso de estándares ayuda a conseguir ese equilibrio, ya que son suficientemente complejos como para disuadir a usuarios o aplicaciones maliciosas y, proporcionando la información correcta, permiten el acceso a usuarios normales mediante autorización.

OAuth es un estándar registrado en la IETF (rfc6749) que ofrece las siguientes ventajas y características:

  • Es un protocolo muy flexible que se basa en SSL (Secure Sockets Layer) que cifra las conexiones y permite manejar el access token de forma segura.
  • Permite a las aplicaciones un acceso limitado, tanto en tiempo porque los tokens caducan, como en funcionalidad gracias a los scopes.
  • Permite compartir datos sin tener que revelar información personal.
  • Existen multitud de herramientas y SDKs que permiten su uso por parte de los desarrolladores en diferentes entornos y tecnologías
  • Da soporte a diferentes tipos de plataformas dependiendo del tipo de recurso que se consume y la plataforma accede a los datos que expone la API: aplicaciones servidor, navegadores, dispositivos IOT, aplicaciones móviles o nativas, etc.

Para poner un ejemplo, el uso de OAuth es análogo al uso de una tarjeta de acceso a un hotel: Para obtener la tarjeta de acceso, el primer paso es pasar un proceso de autenticación tras el cual te dan la tarjeta (un access token), posteriormente puedes usar la tarjeta para acceder a los distintos partes del hotel (recursos de la API) a las cuales se tiene permiso para acceder o no dependiendo del nivel de autenticación.

Scopes, tokens y actores

Los scopes son una lista de identificadores separados por espacios que se utilizan en el proceso de autorización y consentimiento de las APIs en los tokens OAuth, que permiten determinar a qué se solicita acceso por parte de la aplicación y a qué se autoriza acceder por parte del usuario.

Los actores que intervienen en todos los flujos OAuth son:

oauth2-securización-APIs

Los tokens e identificadores que se manejan dentro de OAuth son:

  • El client id es un identificador único que representa la aplicación en el servidor de autenticación.
  • El client secret es una clave secreta que pertenece a la aplicación que es utilizada por el servidor de autorización para comprobar si dicha aplicación está autorizada.
  • Los access token: son claves proporcionadas por el servidor de autorización a la aplicación que permite el acceso a las APIs durante un tiempo limitado tras el cual el token deja de ser válido.
  • Los refresh token: es una clave también proporcionada por el servidor de autorización a la aplicación que permite solicitar nuevos access token después de que estos hayan caducado.

Flujo de trabajo de OAuth 2.0

En la siguiente figura, se puede ver un diagrama de cómo interactúan generalmente entre sí los diferentes actores del protocolo:

oauth-2-flujo-trabajo

  1. La aplicación solicita autorización para acceder a los recursos de servicio del usuario.
  2. Si el usuario autoriza la solicitud, la aplicación recibe la autorización.
  3. La aplicación solicita al servidor de autorización (API), presentando la autenticación de su identidad y la autorización otorgada La aplicación solicita al servidor de autorización (API) un token de acceso presentando la autenticación de su propia identidad y la autorización otorgada.
  4. Si la identidad de la aplicación es autenticada y la autorización es válida, el servidor de autorización (API) emite un token de acceso a la aplicación. La autorización finaliza.
  5. La aplicación solicita el recurso al servidor de recursos (API) y presenta el token de acceso para autenticarse.
  6. Si el token de acceso es válido, el servidor de recursos (API) provee el recurso a la aplicación.

El flujo real de este proceso variará dependiendo del tipo autorización que esté en uso, sin embargo, esta es la idea general.

En el próximo blog de programación profundizaremos en OAuth con la utilización del componente Passport para Laravel, que nos proporciona una implementación completa del protocolo OAuth2 para la securización de nuestras APIs.

Facebook
Facebook
Twitter
Visit Us
LinkedIn