Transformación y protección de una APITransform and protect your API

El tutorial muestra cómo puede transformar una API para que no revele información privada del back-end.The tutorial shows how to transform your API so it does not reveal a private backend info. Por ejemplo, recomendamos ocultar la información sobre la pila de tecnología que se ejecuta en el back-end,For example, you might want to hide the info about technology stack that is running on the backend. así como 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.You might also want to hide original URLs that appear in the body of API's HTTP response and instead redirect them to the APIM gateway.

Este tutorial muestra lo fácil que es agregar protección para la API de back-end configurando el límite de frecuencia con Azure API Management.This tutorial also shows you how easy it is to add protection for your backend API by configuring rate limit with Azure API Management. Por ejemplo, puede que quiera limitar un número de llamadas a la API para que los desarrolladores no la sobreutilicen.For example, you may want to limit a number of calls the API is called so it is not overused by developers. Para obtener más información, consulte Directivas de administración de API.For more information, see API Management policies

En este tutorial, aprenderá a:In this tutorial, you learn how to:

  • Transformación una API para eliminar encabezados de respuestaTransform an API to strip response headers
  • Reemplazo de URL originales en el cuerpo de la respuesta de API con las URL de puerta de enlace de APIMReplace original URLs in the body of the API response with APIM gateway URLs
  • Protección de una API agregando la directiva de límite de frecuencia (limitación)Protect an API by adding rate limit policy (throttling)
  • Prueba de las transformacionesTest the transformations

Directivas

Requisitos previosPrerequisites

Vaya a la instancia de API Management.Go to your API Management instance

  1. En Azure Portal, busque y seleccione Servicios de API Management.In the Azure portal, search for and select API Management services.

    Seleccionar servicios de API Management

  2. En la pantalla de API Management, seleccione la instancia de API Management.On the API Management screen, select your API Management instance.

    Seleccionar su instancia de API Management

Transformación una API para eliminar encabezados de respuestaTransform an API to strip response headers

Esta sección muestra cómo ocultar los encabezados HTTP que no desea mostrar a los usuarios.This section shows how to hide the HTTP headers that you do not want to show to your users. En este ejemplo, se eliminan los siguientes encabezados en la respuesta HTTP:In this example, the following headers get deleted in the HTTP response:

  • X-Powered-ByX-Powered-By
  • X-AspNet-VersionX-AspNet-Version

Prueba de la respuesta originalTest the original response

Para ver la respuesta original, siga estos pasos:To see the original response:

  1. En la instancia de servicio APIM, seleccione API (bajo API MANAGEMENT).In your APIM service instance, select APIs (under API MANAGEMENT).
  2. Haga clic en Demo Conference API (API de conferencia de demostración) en la lista de API.Click Demo Conference API from your API list.
  3. Haga clic en la casilla Prueba de la parte superior de la pantalla.Click the Test tab, on the top of the screen.
  4. Seleccione la operación GetSpeakers.Select the GetSpeakers operation.
  5. Haga clic en el botón Enviar situado en la parte inferior de la pantalla.Press the Send button, at the bottom of the screen.

La respuesta original debería tener este aspecto:The original response should look like this:

Directivas

Establecimiento de la directiva de transformaciónSet the transformation policy

Establecimiento de la directiva saliente

  1. Seleccione Demo Conference API (API de conferencia de demostración).Select Demo Conference API.

  2. En la parte superior de la pantalla, seleccione la pestaña Diseño.On the top of the screen, select Design tab.

  3. Seleccione Todas las operaciones.Select All operations.

  4. En la sección Procesamiento de salida, haga clic en el icono </> .In the Outbound processing section, click the </> icon.

  5. Coloque el cursor dentro del elemento <outbound> .Position the cursor inside the <outbound> element.

  6. En la ventana de la derecha, en Transformation policies (Directivas de transformación), haga clic en Set HTTP header (Establecer encabezado HTTP) dos veces (para insertar dos fragmentos de directiva).In the right window, under Transformation policies, click + Set HTTP header twice (to insert two policy snippets).

    Directivas

  7. Modifique el código <outbound> para que se muestre lo siguiente:Modify your <outbound> code to look like this:

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

    Directivas

  8. Haga clic en el botón Save (Guardar).Click the Save button.

Reemplazo de URL originales en el cuerpo de la respuesta de API con las URL de puerta de enlace de APIMReplace original URLs in the body of the API response with APIM gateway URLs

En esta sección se explica cómo ocultar 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.This section shows how to hide original URLs that appear in the body of API's HTTP response and instead redirect them to the APIM gateway.

Prueba de la respuesta originalTest the original response

Para ver la respuesta original, siga estos pasos:To see the original response:

  1. Seleccione Demo Conference API (API de conferencia de demostración).Select Demo Conference API.

  2. Haga clic en la casilla Prueba de la parte superior de la pantalla.Click the Test tab, on the top of the screen.

  3. Seleccione la operación GetSpeakers.Select the GetSpeakers operation.

  4. Haga clic en el botón Enviar situado en la parte inferior de la pantalla.Press the Send button, at the bottom of the screen.

    Como puede ver, la respuesta original tiene el siguiente aspecto:As you can see the original response looks like this:

    Directivas

Establecimiento de la directiva de transformaciónSet the transformation policy

  1. Seleccione Demo Conference API (API de conferencia de demostración).Select Demo Conference API.

  2. Seleccione Todas las operaciones.Select All operations.

  3. En la parte superior de la pantalla, seleccione la pestaña Diseño.On the top of the screen, select Design tab.

  4. En la sección Procesamiento de salida, haga clic en el icono </> .In the Outbound processing section, click the </> icon.

  5. Coloque el cursor dentro del elemento <outbound> .Position the cursor inside the <outbound> element.

  6. En la ventana de la derecha, en Transformation policies (Directivas de transformación), haga clic en + Find and replace string in body (+ Buscar y reemplazar cadena en el cuerpo).In the right window, under Transformation policies, click + Find and replace string in body.

  7. Modifique el código find-and-replace (en el elemento <outbound> ) para reemplazar la URL con el fin de que coincida con la puerta de enlace de APIM.Modify your find-and-replace code (in the <outbound> element) to replace the URL to match your APIM gateway. Por ejemplo:For example:

    <find-and-replace from="://conferenceapi.azurewebsites.net" to="://apiphany.azure-api.net/conference"/>
    

Protección de una API agregando la directiva de límite de frecuencia (limitación)Protect an API by adding rate limit policy (throttling)

En esta sección se explica cómo agregar protección para la API de back-end configurando límites de frecuencia.This section shows how to add protection for your backend API by configuring rate limits. Por ejemplo, puede que quiera limitar un número de llamadas a la API para que los desarrolladores no la sobreutilicen.For example, you may want to limit a number of calls the API is called so it is not overused by developers. 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.In this example, the limit is set to 3 calls per 15 seconds for each subscription Id. After 15 seconds, a developer can retry calling the API.

Establecimiento de la directiva de entrada

  1. Seleccione Demo Conference API (API de conferencia de demostración).Select Demo Conference API.

  2. Seleccione Todas las operaciones.Select All operations.

  3. En la parte superior de la pantalla, seleccione la pestaña Diseño.On the top of the screen, select Design tab.

  4. En la sección Procesamiento de entrada, haga clic en el icono </> .In the Inbound processing section, click the </> icon.

  5. Coloque el cursor dentro del elemento <inbound> .Position the cursor inside the <inbound> element.

  6. En la ventana de la derecha, bajo Access restriction policies (Directivas de restricción de acceso), haga clic en + Limit call rate per key (+ Limitar la tasa de llamadas por clave).In the right window, under Access restriction policies, click + Limit call rate per key.

  7. Modifique el código rate-limit-by-key (en el elemento <inbound> ) por el código siguiente:Modify your rate-limit-by-key code (in the <inbound> element) to the following code:

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

Prueba de las transformacionesTest the transformations

En este punto, si observa el código en el editor de código, las directivas tienen este aspecto:At this point if you look at the code in the code editor, your policies look like this:

<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" />
        <find-and-replace from="://conferenceapi.azurewebsites.net:443" to="://apiphany.azure-api.net/conference"/>
        <find-and-replace from="://conferenceapi.azurewebsites.net" to="://apiphany.azure-api.net/conference"/>
        <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.The rest of this section tests policy transformations that you set in this article.

Prueba de los encabezados de respuesta eliminadosTest the stripped response headers

  1. Seleccione Demo Conference API (API de conferencia de demostración).Select Demo Conference API.

  2. Seleccione la pestaña Prueba.Select the Test tab.

  3. Haga clic en la operación GetSpeakers.Click the GetSpeakers operation.

  4. Presione Enviar.Press Send.

    Como puede ver, los encabezados se han eliminado:As you can see the headers have been stripped:

    Directivas

Prueba de la URL reemplazadaTest the replaced URL

  1. Seleccione Demo Conference API (API de conferencia de demostración).Select Demo Conference API.

  2. Seleccione la pestaña Prueba.Select the Test tab.

  3. Haga clic en la operación GetSpeakers.Click the GetSpeakers operation.

  4. Presione Enviar.Press Send.

    Como puede ver, la URL se ha reemplazado.As you can see the URL has been replaced.

    Directivas

Prueba del límite de frecuencia (limitación)Test the rate limit (throttling)

  1. Seleccione Demo Conference API (API de conferencia de demostración).Select Demo Conference API.

  2. Seleccione la pestaña Prueba.Select the Test tab.

  3. Haga clic en la operación GetSpeakers.Click the GetSpeakers operation.

  4. Presione Enviar tres veces en una fila.Press Send three times in a row.

    Después de enviar la solicitud 3 veces, obtendrá la respuesta 429 Demasiadas solicitudes.After sending the request 3 times, you get 429 Too many requests response.

  5. Espere 15 segundos o menos y vuelva a pulsar Enviar.Wait 15 seconds or so and press Send again. Esta vez debería obtener una respuesta 200 OK.This time you should get a 200 OK response.

    Limitaciones

VídeoVideo

Pasos siguientesNext steps

En este tutorial aprendió lo siguiente:In this tutorial, you learned how to:

  • Transformación una API para eliminar encabezados de respuestaTransform an API to strip response headers
  • Reemplazo de URL originales en el cuerpo de la respuesta de API con las URL de puerta de enlace de APIMReplace original URLs in the body of the API response with APIM gateway URLs
  • Protección de una API agregando la directiva de límite de frecuencia (limitación)Protect an API by adding rate limit policy (throttling)
  • Prueba de las transformacionesTest the transformations

Avance hasta el siguiente tutorial:Advance to the next tutorial: