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

En este tutorial se muestra cómo puede transformar una API para que no revele información sobre el back-end privado. Por ejemplo, puede que quiera ocultar la información sobre la pila de tecnología que se ejecuta en el back-end o las URL originales que aparecen en el cuerpo de la respuesta HTTP de la API y, en su lugar, redirigirlas a la puerta de enlace de APIM.

En este tutorial se muestra lo fácil que es agregar protección para la API de back-end configurando un límite de frecuencia con Azure API Management. Por ejemplo, puede que quiera limitar la frecuencia de llamadas API para que los desarrolladores no las usen en exceso. Para más información, consulte Directivas de API Management.

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 APIM
  • Protección de una API agregando una directiva de límite de frecuencia (limitación)
  • Prueba de las transformaciones

Directivas 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. En este ejemplo, se muestra cómo eliminar los siguientes encabezados 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 elija Enviar.

La respuesta original debe ser similar a la siguiente:

Respuesta de la API original

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

Establecimiento de la directiva de transformación

  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 ( </> ).

    Ir a la directiva de salida

  3. Coloque el cursor dentro del elemento <outbound> y seleccione Show snippets (Mostrar fragmentos de código) en la esquina superior derecha.

  4. En la ventana derecha, en Transformation policies (Directivas de transformación), seleccione Set HTTP header (Establecer encabezado HTTP) dos veces (para insertar dos fragmentos de código de directiva).

    Directiva de establecimiento de encabezado HTTP

  5. Modificar el código <outbound> para que se parezca a esto:

    <set-header name="X-Powered-By" exists-action="delete" />
    <set-header name="X-AspNet-Version" exists-action="delete" />
    

    Establecer encabezado HTTP

  6. Seleccione Guardar.

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

En esta sección se explica cómo ocultar las direcciones URL originales que aparecen en el cuerpo de la respuesta HTTP de la API y, en su lugar, redirigirlas a la puerta de enlace de APIM.

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 elija Enviar.

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

    Direcciones URL de back-end originales en la respuesta

Establecimiento de la directiva de transformación

  1. Seleccione Demo Conference API > Todas las operaciones > Diseño.
  2. En la sección Procesamiento de salida, seleccione el icono del editor de código ( </> ).
  3. Coloque el cursor dentro del elemento <outbound> y seleccione Show snippets (Mostrar fragmentos de código) en la esquina superior derecha.
  4. En la ventana derecha, en Transformation policies (Directivas de transformación), haga clic en Mask URLs in content (Enmascarar direcciones URL en contenido).
  5. Seleccione Guardar.

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

En esta sección se explica cómo agregar protección para la API de back-end configurando límites de frecuencia. Por ejemplo, puede que quiera limitar la frecuencia de llamadas API para que los desarrolladores no las usen en exceso. En este ejemplo, el límite se establece en 3 llamadas cada 15 segundos para cada identificador de suscripción. Después de 15 segundos, un desarrollador puede volver a tratar de llamar a la API.

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

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

  3. Coloque el cursor dentro del elemento <inbound> y seleccione Show snippets (Mostrar fragmentos de código) en la esquina superior derecha.

    Establecimiento de la directiva de entrada

  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).

  5. Cambie el código rate-limit-by-key (en el elemento <inbound> ) por el código siguiente:

    <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 este aspecto:

<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, los encabezados se han eliminado:

    Encabezados de respuesta eliminados

Prueba de la URL reemplazada

  1. Seleccione Demo Conference API > Probar.

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

    Como puede ver, la dirección URL se ha reemplazado.

    Dirección URL reemplazada

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

  1. Seleccione Demo Conference API > Probar.

  2. Seleccione la operación GetSpeakers. Seleccione Enviar tres veces en una fila.

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

    Demasiadas solicitudes

  3. Espere unos 15 segundos y seleccione de nuevo Enviar. Esta vez debería obtener una respuesta 200 OK.

Pasos siguientes

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 APIM
  • Protección de una API agregando la directiva de límite de frecuencia (limitación)
  • Prueba de las transformaciones

Avance hasta el siguiente tutorial: