Compartir vía


Tutorial: Transformación y protección de una API

SE APLICA A: todos los niveles de API Management

En este tutorial, obtendrá información sobre cómo configurar directivas comunes para transformar la API. Posiblemente quiera transformar la API para que no revele información de back-end privada. La transformación de una API puede ayudarle a ocultar la información de la pila de tecnología que se ejecuta en el back-end u ocultar las direcciones URL originales que aparecen en el cuerpo de la respuesta HTTP de la API.

En este tutorial también se explica cómo agregar protección a la API de back-end mediante la configuración de una directiva de límite de velocidad para que los desarrolladores no usen demasiado la API. Para obtener más opciones sobre la directiva, consulte Directivas de API Management.

Nota

De forma predeterminada, API Management configura una directiva global forward-request. La directiva forward-request es necesaria para que la puerta de enlace complete una solicitud a un servicio back-end.

En este tutorial, aprenderá a:

  • Transformación una API para eliminar encabezados de respuesta
  • Reemplazo de URL originales en el cuerpo de la respuesta de API con las URL de puerta de enlace de API Management
  • Protección de una API agregando una directiva de límite de frecuencia (limitación)
  • Prueba de las transformaciones

Captura de pantalla de las directivas de API Management en el portal.

Requisitos previos

Vaya a la instancia de API Management.

  1. En Azure Portal, busque y seleccione Servicios de API Management.

    Seleccionar servicios de API Management

  2. En la página de servicios API Management, seleccione la instancia de API Management.

    Seleccionar su instancia de API Management

Transformación una API para eliminar encabezados de respuesta

En esta sección se muestra cómo ocultar los encabezados HTTP que no quiera mostrar a los usuarios. Por ejemplo, elimine los encabezados siguientes en la respuesta HTTP:

  • X-Powered-By
  • X-AspNet-Version

Prueba de la respuesta original

Para ver la respuesta original, siga estos pasos:

  1. En la instancia de servicio de API Management, seleccione API.
  2. Seleccione Demo Conference API en la lista de API.
  3. Seleccione la pestaña Prueba en la parte superior de la pantalla.
  4. Seleccione la operación GetSpeakers y luego Enviar.

La respuesta de la API original debe ser similar a la siguiente:

Captura de pantalla de la respuesta de API original en el portal.

Como puede ver, la respuesta incluye los encabezados X-AspNet-Version y X-Powered-By.

Establecimiento de la directiva de transformación

En este ejemplo se muestra cómo usar el editor de directivas basado en formularios, que le ayuda a configurar varias directivas sin tener que editar las instrucciones XML de las directivas directamente.

  1. Seleccione Demo Conference API>Diseño>Todas las operaciones.

  2. En la sección Procesamiento de salida, seleccione Agregar directiva.

    Captura de pantalla de la navegación a la directiva de salida en el portal.

  3. En la ventana Agregar directiva de salida, seleccione Establecer encabezados.

    Captura de pantalla de la configuración de la directiva Establecer encabezados en el portal.

  4. Para configurar el conjunto de directivas de encabezados, haga lo siguiente:

    1. En Nombre, escriba X-Powered-By.
    2. Deje Valor vacío. Si aparece un valor en la lista desplegable, elimínelo.
    3. En Acción, seleccione Eliminar.
    4. Seleccione Guardar.
  5. Repita los dos pasos anteriores para agregar una directiva Establecer encabezados que elimine el encabezado X-AspNet-Version:

  6. Después de la configuración, aparecen dos elementos de política de encabezado en la sección Procesamiento de salida.

    Captura de pantalla de las directivas de salida Establecer encabezados en el portal.

Reemplazo de URL originales en el cuerpo de la respuesta de API con las URL de puerta de enlace de API Management

En esta sección se muestra cómo reemplazar las direcciones URL originales que aparecen en el cuerpo de la respuesta HTTP de la API con las direcciones URL de la puerta de enlace de API Management. Es posible que quiera ocultar las direcciones URL de back-end originales de los usuarios.

Prueba de la respuesta original

Para ver la respuesta original, siga estos pasos:

  1. Seleccione Demo Conference API>Probar.

  2. Seleccione la operación GetSpeakers y luego Enviar.

    Como puede ver, la respuesta incluye las direcciones URL de back-end originales:

    Captura de pantalla de las direcciones URL originales en respuesta en el portal.

Establecimiento de la directiva de transformación

En este ejemplo, se usa el editor de código de directiva para agregar el fragmento de código XML de la directiva directamente a la definición de directiva.

  1. Seleccione Demo Conference API>Diseño>Todas las operaciones.

  2. En la sección Procesamiento de salida, seleccione el icono del editor de código (</>).

    Captura de pantalla de navegación al editor de código de directiva de salida en el portal.

  3. Coloque el cursor dentro del elemento <outbound> en una línea en blanco. A continuación, seleccione Mostrar fragmentos de código en la esquina superior derecha de la pantalla.

    Captura de pantalla de la selección de mostrar fragmentos de código en el editor de directivas de salida en el portal.

  4. En la ventana derecha, en Transformation policies (Directivas de transformación), haga clic en Mask URLs in content (Enmascarar direcciones URL en contenido).

    El elemento <redirect-content-urls />se agrega en la posición del cursor.

    Captura de pantalla de la inserción de direcciones URL de máscara en la directiva de contenido en el portal.

  5. Seleccione Guardar.

Protección de una API agregando la directiva de límite de frecuencia (limitación)

En esta sección se muestra cómo agregar protección a la API de back-end mediante la configuración de límites de velocidad, de modo que los desarrolladores no usen demasiado la API. En este ejemplo, el límite se establece en tres llamadas cada 15 segundos para cada id. de suscripción. Después de 15 segundos, un desarrollador puede volver a intentar llamar a una API.

  1. Seleccione Demo Conference API>Diseño>Todas las operaciones.

  2. En la sección Procesamiento de entrada, seleccione el icono del editor de código (</>).

    Captura de pantalla de la navegación al editor de código de directiva de entrada en el portal.

  3. Coloque el cursor dentro del elemento <inbound> en una línea en blanco. A continuación, seleccione Mostrar fragmentos de código en la esquina superior derecha de la pantalla.

    Captura de pantalla de la selección de mostrar fragmentos de código en el editor de directivas de entrada en el portal.

  4. En la ventana derecha, en Access restriction policies (Directivas de restricción de acceso), seleccione Limit call rate per key (Limitar la frecuencia de llamadas por clave).

    El elemento <rate-limit-by-key />se agrega en la posición del cursor.

    Captura de pantalla de la inserción de la tasa de llamadas de límite por directiva de clave en el portal.

  5. Cambie el código <rate-limit-by-key /> en el elemento <inbound> por el código siguiente. Después, seleccione Guardar.

    <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
    

Prueba de las transformaciones

Llegados a este punto, si examina el código en el editor de código, las directivas tienen el aspecto del código siguiente:

<policies>
   <inbound>
     <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
     <base />
   </inbound>
   <backend>
     <base />
   </backend>
   <outbound>
     <set-header name="X-Powered-By" exists-action="delete" />
     <set-header name="X-AspNet-Version" exists-action="delete" />
     <redirect-content-urls />
     <base />
   </outbound>
   <on-error>
     <base />
   </on-error>
</policies>

En el resto de esta sección se prueban transformaciones de directiva que estableció en este artículo.

Prueba de los encabezados de respuesta eliminados

  1. Seleccione Demo Conference API>Probar.

  2. Seleccione la operación GetSpeakers y elija Enviar.

    Como puede ver, se quitaron los encabezados X-AspNet-Version y X-Powered-By:

    Captura de pantalla que muestra los encabezados de respuesta eliminados en el portal.

Prueba de la URL reemplazada

  1. Seleccione Demo Conference API>Probar.

  2. Seleccione la operación GetSpeakers y elija Enviar.

    Como puede ver, las direcciones URL se han reemplazado.

    Captura de pantalla que muestra las direcciones URL reemplazadas en el portal.

Prueba del límite de frecuencia (limitación)

  1. Seleccione Demo Conference API>Probar.

  2. Seleccione la operación GetSpeakers. Seleccione Enviar cuatro veces seguidas.

    Después de enviar la solicitud cuatro veces, recibirá la respuesta 429 Demasiadas solicitudes.

    Captura de pantalla que muestra demasiadas solicitudes en la respuesta en el portal.

  3. Espere 15 segundos o más, y luego seleccione de nuevo Enviar. Esta vez debería obtener una respuesta 200 OK.

Resumen

En este tutorial ha aprendido a:

  • Transformación una API para eliminar encabezados de respuesta
  • Reemplazo de URL originales en el cuerpo de la respuesta de API con las URL de puerta de enlace de API Management
  • Protección de una API agregando la directiva de límite de frecuencia (limitación)
  • Prueba de las transformaciones

Pasos siguientes

Avance hasta el siguiente tutorial: