¿Qué es la administración de API?

En un contexto arquitectónico o de diseño de sistemas, la administración de API se refiere comúnmente a un proxy inverso configurable y de gran funcionalidad que se utiliza para administrar el acceso de los clientes (externos, internos o de otro tipo) a una API, un extremo o un método. Comúnmente utilizada con las API RESTful, aunque no exclusivamente, la administración de API proporciona una capa de administración y protección de las solicitudes para que una solicitud entrante pueda ser verificada, inspeccionada, modificada y se pueda actuar en consecuencia, y la respuesta que llega de vuelta del sistema backend pueda ser modificada o se pueda actuar en consecuencia. Algunas organizaciones pueden utilizar un bus de servicios empresariales para lograr objetivos similares. Un bus de servicios empresariales es un término definido de manera flexible para una clase de tecnologías que incluyen implicaciones adicionales relacionadas con ese componente, pero que pueden beneficiarse del mismo conjunto de recomendaciones para los servicios de administración de API.

A continuación, se mencionan algunos ejemplos de sistemas de administración de API:

  • Administración de API de Azure
  • AWS API Gateway
  • Mulesoft Anypoint
  • Apigee
  • Kong
  • Boomi

Comprender la administración de API

El comportamiento de administración de la API es diferente al de un proxy inverso tradicional, que normalmente reenvía un patrón completo de tráfico HTTP a un servidor backend. Por ejemplo:

<host-externo>:443/server/rest/services/* » <host-interno>>:6443/arcgis/rest/services/*

La administración de API a menudo implica la selección de rutas URI de API y métodos HTTP individuales (es decir, un POST a /routes/extract y un PATCH a /routes/<routeid>), lo que significa que hay que definir cada método o patrón individual, pero también que cada patrón puede tener reglas, comportamientos y agentes de escucha o servicios backend diferentes. Se utiliza con frecuencia en la construcción de nuevas API o sistemas, cuando no existe un conjunto de servicios web, o para habilitar una arquitectura al estilo de los microservicios, en la que otros componentes o sistemas backend se encargan de dar servicio a solicitudes de API independientes. En algunos casos, la administración de API puede utilizar una definición de API de backend, como una especificación OpenAPI, para crear muchos extremos o métodos de frontend.

La administración de API también suele incluir una matriz de otras opciones de procesamiento, que o bien manipulan el contenido de la solicitud (ajustando o reescribiendo una ruta, agregando o modificando un encabezado, cambiando el destino en función del contenido del cuerpo de POST), aplican algún tipo de filtrado a la solicitud (limitación de velocidad, bloqueo de determinados rangos de IP, exigencia de claves de API), u operan sobre la respuesta (ofuscando nombres de servidores, eliminando encabezados de respuesta, agregando una huella digital o un identificador). Estas operaciones se definen en la capa de administración de API y se ejecutan en cada solicitud a medida que se envía y se crea una respuesta.

Todos estos patrones se aplican generalmente también a las tecnologías de bus de servicios empresariales, con algunas diferencias. Los ESB tienden a centrarse en la entrega sincrónica de mensajes, donde un cambio en una parte del sistema (se agrega un nuevo registro, se lleva a cabo una actualización) desencadena un envío de este cambio al ESB, que luego transforma y envía el mensaje a otros sistemas para mantenerlos sincronizados. En cierto sentido, la administración de API es más una metodología de consulta y sondeo, mientras que los ESB suelen introducir compromisos sólidos de entrega de mensajes, patrones pub-sub u otros planteamientos similares.

Administración de API y ArcGIS

La administración de API se puede utilizar en muchos patrones diferentes con ArcGIS. En general, la administración de API es más aplicable a los casos de uso en los que se implementa «delante» de los servicios basados en ArcGIS Server, como los servicios de mapas, entidades o geoprocesamiento, en escenarios en los que dichos servicios deben exponerse a otro sistema empresarial o a un desarrollador o cliente final que utilice una aplicación personalizada. Algunas consideraciones clave para trabajar con la administración de API incluyen:

  • Por lo general, la administración de API funciona mejor como patrón arquitectónico con implementaciones autónomas de ArcGIS Server. Gestionar el intercambio de tokens y la validación necesaria para un servidor federado como parte de una implementación de ArcGIS Enterprise es bastante más complejo y requeriría una configuración avanzada de ArcGIS o de la administración de API y el conocimiento para gestionar la variedad de solicitudes de autenticación y de extremos.
  • El sistema de administración de API suele acceder de forma anónima a los servicios REST de ArcGIS, y las solicitudes de “servicio” de administración de API se envían al backend de ArcGIS sin más pasos de autenticación. Aunque ArcGIS admite muchos patrones de autenticación, desde nombres de usuario y contraseñas integrados hasta SAML y OIDC, un patrón de administración de API suele suponer que la API backend es accesible de forma anónima a las solicitudes procedentes del servicio de administración de API.
  • Por lo general, la administración de API debe utilizarse para exponer servicios o extremos específicos, no sitios enteros de ArcGIS Server. Si su objetivo es exponer un sitio entero, un proxy inverso tradicional suele ser una solución mejor que será más compatible con los flujos de trabajo.
  • Por lo general, ArcGIS proporciona API REST más detalladas, lo que significa que el servicio de administración de API debe admitir patrones comodín flexibles o reenviar solo rutas específicas. Es especialmente relevante si el objetivo es exponer el servicio al software ArcGIS de cliente, que está diseñado para esperar una API totalmente disponible (en la que se pueda acceder a todos los métodos y recursos).

Por ejemplo:

  • El reenvío de esta solicitud es suficiente para obtener detalles sobre un servicio específico:
    • /arcgis/rest/services/ServiceName/MapServer
  • Sin embargo, si desea admitir la funcionalidad del servicio de mapas y de la capa de entidades, deberá reenviar adicionalmente este tipo de solicitudes:
    • /arcgis/rest/services/ServiceName/MapServer/exportImage
    • /arcgis/rest/services/ServiceName/MapServer/0/query
    • /arcgis/rest/services/ServiceName/MapServer/1/query

Prácticas recomendadas

La administración de API es una forma cada vez más popular de proporcionar opciones de integración entre sistemas empresariales. Muchas organizaciones invierten en políticas o las crean para garantizar que todas las transacciones internas sean gestionadas por un sistema de administración de API, o pueden requerir el uso de la administración de API para crear servicios accesibles desde el exterior. En el contexto de la integración de sistemas, las prácticas recomendadas incluyen:

  • Si el objetivo es aplicar la autenticación solo en el nivel del servicio de administración de API y que toda la actividad de los usuarios utilice ese extremo, los servicios de ArcGIS definidos como backend deben configurarse generalmente como no seguros o “compartidos con todos” con acceso público o de la organización limitado a través de un diseño de red o un firewall, con el acceso habilitado solo desde el servicio de administración de API.
  • Tenga en cuenta las URL de contexto web y la implementación de encabezados relacionados con el proxy para garantizar que el componente ArcGIS Server detrás de una administración de API sea consciente del proxy y devuelva URL válidas siempre que sea posible.
  • Los vínculos que se devuelven desde una solicitud a través del servicio de administración de API deben inspeccionarse y modificarse para utilizar el nombre de host y el contexto adecuados para futuras solicitudes. Por ejemplo, una solicitud de servicio de impresión asíncrona devuelve una URL final a la salida PDF resultante, que el usuario solicitará a continuación. Esta URL puede hacer referencia a un nombre de host interno y el contenido se puede reescribir en el sistema de administración de API.

Trabajar con autenticación y claves de API

La administración de API no incluye por definición una capa de autenticación, pero muchas organizaciones desean aplicar la autenticación a los extremos de su administración de API, con fines de validación de usuarios y administración de autorizaciones. Los métodos comunes de autenticación para la administración de API incluyen el uso de una clave de API o de suscripción, así como la integración con métodos de autenticación basados en OAuth a un proveedor de identidad (IdP) existente. Cada uno de estos patrones puede crear algunos retos con los flujos de trabajo de integración de ArcGIS.

Tenga en cuenta que los métodos de autenticación de clientes basados en la administración de API pueden no ser compatibles con los clientes estándar de ArcGIS. Por ejemplo, si el sistema de administración de API exige una autenticación basada en encabezados, ya sea utilizando un encabezado específico del servicio o un encabezado de autorización de portador, los clientes estándar de ArcGIS no podrán agregar ese encabezado dinámicamente a las solicitudes para admitir el acceso a ese servicio. Del mismo modo, las claves de API podrían ser una capa de autenticación común que se agrega a través de una interfaz de administración de API, pero los desarrolladores de aplicaciones deben ser conscientes de este requisito y tener la capacidad de agregarlo a las solicitudes para integrar estos servicios en una aplicación. Diversos SDK de ArcGIS y patrones de registro de servicios pueden admitir este tipo de patrón de autenticación de clave de suscripción o clave de API, pero deben probarse cuidadosamente antes de asumir que un patrón de autenticación es adecuado.

La autenticación basada en OAuth para la administración de API presenta otros retos. Al desarrollar una aplicación personalizada con un SDK compatible, puede resultar relativamente sencillo proporcionar un redireccionamiento inicial al servicio OAuth, devolver un token o código y utilizar ese token para incorporarlo a futuras solicitudes en esa sesión. Sin embargo, al utilizar la aplicación ArcGIS lista para usar, esta configuración es mucho más difícil de utilizar correctamente, ya que estos clientes esperan acceder directamente a los geoservicios de ArcGIS, sin pasos de autenticación adicionales que no sean gestionados por ArcGIS.

Por lo general, el uso de claves API o de suscripción proporciona la ruta de integración más exitosa en este contexto, con las siguientes recomendaciones:

  • Las claves de API o las claves de suscripción deben admitir su uso como parámetros de consulta URL. La autenticación basada en encabezados puede recibir soporte para algunos flujos de trabajo, como una aplicación personalizada basada en Esri Maps SDK o una integración basada en Python, pero para la mayoría de las interfaces existentes, el uso de un encabezado de autenticación que no sea de ArcGIS no es posible en este momento.
  • Las claves de API se pueden agregar a un elemento de contenido creado en versiones recientes de ArcGIS Online o ArcGIS Enterprise, ya sea como un parámetro personalizado proporcionado durante la creación del elemento o incorporado directamente a la URL registrada con el elemento. Pruebe estas opciones con cuidado para valorar si dan acceso suficiente al contenido solicitado.
  • Al utilizar servicios protegidos por claves de API en ArcGIS Pro, el flujo de trabajo Agregar datos desde ruta también admite el uso de parámetros personalizados.
Top