Articulo de referencia

Seguridad de la API web

La seguridad de las API web implica autenticar los programas o usuarios que invocan una API web . La facilidad de integración de las API conlleva la dificultad de garantizar una...

La seguridad de las API web implica autenticar los programas o usuarios que invocan una API web .

La facilidad de integración de las API conlleva la dificultad de garantizar una autenticación (AuthN) y autorización (AuthZ) adecuadas. En un entorno multiusuario, los controles de seguridad basados ​​en una AuthN y AuthZ correctas pueden ayudar a garantizar que el acceso a la API se limite a quienes lo necesitan (y tienen derecho a él). Los esquemas de AuthN apropiados permiten a los productores (API o servicios) identificar correctamente a los consumidores (clientes o programas que realizan llamadas) y evaluar su nivel de acceso (AuthZ). En otras palabras, ¿puede un consumidor invocar un método específico (lógica de negocio) en función de las credenciales presentadas?

"Los fallos de diseño de interfaz son generalizados, desde el mundo de los procesadores criptográficos hasta diversos sistemas embebidos , pasando por el software antivirus y el propio sistema operativo." [ 1 ] 

Método de autenticación y autorización

Los métodos más comunes de autenticación y autorización incluyen:

  1. Cadenas estáticas: Son como contraseñas que las API proporcionan a los consumidores.
  2. Tokens dinámicos: Se trata de tokens basados ​​en el tiempo que el usuario obtiene de un servicio de autenticación.
  3. Tokens delegados por el usuario: Estos son tokens como OAuth [ 2 ] que se otorgan en función de la autenticación del usuario.
  4. Control de acceso basado en políticas y atributos : las políticas utilizan atributos para definir cómo se pueden invocar las API utilizando estándares como ALFA o XACML .

Los métodos mencionados ofrecen distintos niveles de seguridad y facilidad de integración. A menudo, el método de integración más sencillo también ofrece el modelo de seguridad más débil.

Cadenas estáticas

Diagrama de bloques de autenticación básica

En el método de cadenas estáticas, quien llama a la API o el cliente inserta una cadena como token en la solicitud. Este método se conoce comúnmente como autenticación básica. [ 3 ] "Desde el punto de vista de la seguridad, la autenticación básica no es muy satisfactoria. Implica enviar la contraseña del usuario a través de la red en texto plano para cada página a la que se accede (a menos que se utilice un protocolo seguro de nivel inferior, como SSL , para cifrar todas las transacciones). Por lo tanto, el usuario es muy vulnerable a cualquier analizador de paquetes en la red." [ 4 ]

tokens dinámicos

Cuando una API está protegida por un token dinámico, se inserta un nonce basado en el tiempo en el token. El token tiene un tiempo de vida (TTL) después del cual el cliente debe obtener un nuevo token. El método de la API tiene un algoritmo de verificación de tiempo y, si el token ha caducado, la solicitud se prohíbe. "Un ejemplo de dicho token es JSON Web Token . La declaración "exp" (tiempo de expiración) identifica el tiempo de expiración a partir del cual el JWT NO DEBE aceptarse para su procesamiento." [ 5 ]

Token delegado por el usuario

Este tipo de token se utiliza en sistemas de tres patas donde una aplicación necesita acceder a una API en nombre de un usuario. En lugar de revelar el ID de usuario y la contraseña a la aplicación, el usuario otorga un token que encapsula su permiso para que la aplicación invoque la API.

El marco de autorización OAuth 2.0 permite que una aplicación de terceros obtenga acceso limitado a un servicio HTTP , ya sea en nombre del propietario del recurso mediante la orquestación de una interacción de aprobación entre el propietario del recurso y el servicio HTTP, o permitiendo que la aplicación de terceros obtenga acceso en su propio nombre. [ 6 ]

Autorización granular para API

Control de acceso basado en atributos

En este enfoque, existe un Punto de Aplicación de Políticas, ya sea dentro de la propia API, en el marco de la API (como interceptor o gestor de mensajes) o como una puerta de enlace de API (por ejemplo, WSO2 , Kong, Tyk o similar ), que intercepta la llamada a la API y/o la respuesta de la misma. La convierte en una solicitud de autorización (normalmente en XACML) que envía a un Punto de Decisión de Políticas (PDP). El Punto de Decisión de Políticas se configura con políticas que implementan un control de acceso dinámico que puede utilizar cualquier número de atributos de usuario, recurso, acción y contexto para definir qué acceso está permitido o denegado. Las políticas pueden tratar sobre:

  1. el recurso (por ejemplo, una cuenta bancaria)
  2. el usuario (por ejemplo, un cliente)
  3. el contexto (por ejemplo, la hora del día)
  4. una relación (por ejemplo, el cliente al que pertenece la cuenta).

Las políticas se expresan en ALFA o XACML.

Referencias

  1. "Ataques a la API" (PDF) .
  2. "OAuth 2.0 — OAuth" . oauth.net . Consultado el 10 de octubre de 2015 .
  3. "Protocolo de transferencia de hipertexto -- HTTP/1.0: Esquema de autenticación básica" . w3.org . Consultado el 8 de julio de 2026 .
  4. "Guía de alternativas de autenticación web: Parte 2" . unixpapa.com . Consultado el 10 de octubre de 2015 .
  5. John, Bradley; Nat, Sakimura; Michael, Jones. "JSON Web Token (JWT)" . tools.ietf.org . Consultado el 10 de octubre de 2015 .
  6. Hardt, Dick. "El marco de autorización OAuth 2.0" . tools.ietf.org . Consultado el 11 de octubre de 2015 .
  • Proyecto de seguridad de API de OWASP