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
Requisitos previos
- Conocer la terminología de API Management de Azure.
- Comprender el concepto de directivas en API Management de Azure.
- Complete el siguiente inicio rápido: Creación de una instancia de Azure API Management.
- Además, realice el siguiente tutorial: Importación y publicación de la primera API.
Vaya a la instancia de API Management.
En Azure Portal, busque y seleccione Servicios de API Management.
En la página de servicios API Management, seleccione la 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:
- En la instancia de servicio de API Management, seleccione API.
- Seleccione Demo Conference API en la lista de API.
- Seleccione la pestaña Prueba en la parte superior de la pantalla.
- Seleccione la operación GetSpeakers y elija Enviar.
La respuesta original debe ser similar a la siguiente:
Como puede ver, la respuesta incluye los encabezados X-AspNet-Version y X-Powered-By.
Establecimiento de la directiva de transformación
Seleccione Demo Conference API > Diseño > Todas las operaciones.
En la sección Procesamiento de salida, seleccione el icono del editor de código ( </> ).
Coloque el cursor dentro del elemento <outbound> y seleccione Show snippets (Mostrar fragmentos de código) en la esquina superior derecha.
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).
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" />
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:
Seleccione Demo Conference API > Probar.
Seleccione la operación GetSpeakers y elija Enviar.
Como puede ver, la respuesta incluye las direcciones URL de back-end originales:
Establecimiento de la directiva de transformación
- Seleccione Demo Conference API > Todas las operaciones > Diseño.
- En la sección Procesamiento de salida, seleccione el icono del editor de código ( </> ).
- Coloque el cursor dentro del elemento <outbound> y seleccione Show snippets (Mostrar fragmentos de código) en la esquina superior derecha.
- En la ventana derecha, en Transformation policies (Directivas de transformación), haga clic en Mask URLs in content (Enmascarar direcciones URL en contenido).
- 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.
Seleccione Demo Conference API > Todas las operaciones > Diseño.
En la sección Procesamiento de entrada, seleccione el icono del editor de código ( </> ).
Coloque el cursor dentro del elemento <inbound> y seleccione Show snippets (Mostrar fragmentos de código) en la esquina superior derecha.
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).
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
Seleccione Demo Conference API > Probar.
Seleccione la operación GetSpeakers y elija Enviar.
Como puede ver, los encabezados se han eliminado:
Prueba de la URL reemplazada
Seleccione Demo Conference API > Probar.
Seleccione la operación GetSpeakers y elija Enviar.
Como puede ver, la dirección URL se ha reemplazado.
Prueba del límite de frecuencia (limitación)
Seleccione Demo Conference API > Probar.
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.
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: