Transformar e proteger a sua APITransform and protect your API

O tutorial mostra como transformar a API para que a mesma não revele informações de um back-end privado.The tutorial shows how to transform your API so it does not reveal a private backend info. Por exemplo, poderá pretender ocultar as informações sobre a pilha de tecnologia que está em execução no back-end.For example, you might want to hide the info about technology stack that is running on the backend. Pode também querer ocultar URLs originais que aparecem no corpo da resposta HTTP da API e, em vez disso, redirecioná-los para o gateway 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 também mostra como é fácil adicionar proteção à sua API de back-end através da configuração do limite de taxas com a Gestão de API do Azure.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 exemplo, poderá limitar um número de chamadas à API para que não seja sobreutilizada pelos programadores.For example, you may want to limit a number of calls the API is called so it is not overused by developers. Para obter mais informações, veja Políticas de Gestão de APIFor more information, see API Management policies

Neste tutorial, ficará a saber como:In this tutorial, you learn how to:

  • Transformar uma API para remover os cabeçalhos de respostaTransform an API to strip response headers
  • Substituir os URLs originais no corpo de resposta da API pelos URLs de gateway de APIMReplace original URLs in the body of the API response with APIM gateway URLs
  • Proteger uma API ao adicionar a política de limite de taxas (limitação)Protect an API by adding rate limit policy (throttling)
  • Testar as transformaçõesTest the transformations

Políticas

Pré-requisitosPrerequisites

Vá para a sua instância de Gestão de APIGo to your API Management instance

Navegar para a instância de Gestão de API

  1. Inicie sessão no portal do Azure.Sign in to the Azure portal.

  2. Selecione Todos os serviços.Select All services.

  3. Na caixa de pesquisa, introduza api management.In the search box, enter api management.

  4. Nos resultados da pesquisa, selecione Serviços de Gestão de API.In the search results, select API Management services.

  5. Selecionar a sua instância de serviço de Gestão de API.Select your API Management service instance.

Dica

Para adicionar a Gestão de API aos seus favoritos no portal do Azure, selecione a estrela.To add API Management to your favorites in the Azure portal, select the star.

O ícone de Gestão de API (The API Management icon (ícone de Gestão de API) agora aparece no menu da esquerda do portal.) now appears in the left menu in the portal.

Transformar uma API para remover os cabeçalhos de respostaTransform an API to strip response headers

Esta secção mostra como ocultar os cabeçalhos HTTP que não pretende mostrar aos seus utilizadores.This section shows how to hide the HTTP headers that you do not want to show to your users. Neste exemplo, os seguintes cabeçalhos são eliminados na resposta HTTP:In this example, the following headers get deleted in the HTTP response:

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

Testar a resposta originalTest the original response

Para ver a resposta original:To see the original response:

  1. Na sua instância de serviço APIM, selecione APIs (sob GESTÃO DE APIS).In your APIM service instance, select APIs (under API MANAGEMENT).
  2. Clique em API da Conferência de Demonstração na lista de API.Click Demo Conference API from your API list.
  3. Clique no separador Teste, na parte superior do ecrã.Click the Test tab, on the top of the screen.
  4. Selecione a operação GetSpeakers.Select the GetSpeakers operation.
  5. Prima o botão Enviar, na parte inferior do ecrã.Press the Send button, at the bottom of the screen.

A resposta original deve ter o seguinte aspeto:The original response should look like this:

Políticas

Definir a política de transformaçãoSet the transformation policy

Definir política de saída

  1. Selecione API da Conferência de Demonstração.Select Demo Conference API.

  2. Na parte superior do ecrã, selecione o separador Design.On the top of the screen, select Design tab.

  3. Selecione Todas as operações.Select All operations.

  4. Na secção Processamento de saída, clique no ícone </> .In the Outbound processing section, click the </> icon.

  5. Posicione o cursor no interior do elemento <saída> .Position the cursor inside the <outbound> element.

  6. Na janela direita, em Políticas de transformação, clique em + Definir cabeçalho de HTTP duas vezes (para inserir dois fragmentos de política).In the right window, under Transformation policies, click + Set HTTP header twice (to insert two policy snippets).

    Políticas

  7. Modifique seu < código de > de saída para ter a seguinte aparência: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" />
    

    Políticas

  8. Clique no botão Guardar.Click the Save button.

Substituir os URLs originais no corpo de resposta da API pelos URLs de gateway de APIMReplace original URLs in the body of the API response with APIM gateway URLs

Esta secção mostra como ocultar os URLs originais que aparecem no corpo da resposta HTTP da API e, em vez disso, redirecioná-los para o gateway 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.

Testar a resposta originalTest the original response

Para ver a resposta original:To see the original response:

  1. Selecione API da Conferência de Demonstração.Select Demo Conference API.

  2. Clique no separador Teste, na parte superior do ecrã.Click the Test tab, on the top of the screen.

  3. Selecione a operação GetSpeakers.Select the GetSpeakers operation.

  4. Prima o botão Enviar, na parte inferior do ecrã.Press the Send button, at the bottom of the screen.

    Como pode ver, a resposta original tem o seguinte aspeto:As you can see the original response looks like this:

    Políticas

Definir a política de transformaçãoSet the transformation policy

  1. Selecione API da Conferência de Demonstração.Select Demo Conference API.

  2. Selecione Todas as operações.Select All operations.

  3. Na parte superior do ecrã, selecione o separador Design.On the top of the screen, select Design tab.

  4. Na secção Processamento de saída, clique no ícone </> .In the Outbound processing section, click the </> icon.

  5. Posicione o cursor no interior do elemento <saída> .Position the cursor inside the <outbound> element.

  6. Na janela direita, em Políticas de transformação, clique em + Localizar e substituir a cadeia no corpo.In the right window, under Transformation policies, click + Find and replace string in body.

  7. Modifique o código find-and-replace (no elemento de <saída> ) para substituir o URL para que corresponda ao seu gateway de APIM.Modify your find-and-replace code (in the <outbound> element) to replace the URL to match your APIM gateway. Por exemplo:For example:

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

Proteger uma API ao adicionar a política de limite de taxas (limitação)Protect an API by adding rate limit policy (throttling)

Esta secção mostra como adicionar proteção à API de back-end através da configuração de limites de taxas.This section shows how to add protection for your backend API by configuring rate limits. Por exemplo, poderá limitar um número de chamadas à API para que não seja sobreutilizada pelos programadores.For example, you may want to limit a number of calls the API is called so it is not overused by developers. Neste exemplo, o limite está definido para 3 chamadas por cada 15 segundos, para cada ID de subscrição. Após os 15 segundos, um programador pode tentar chamar a API novamente.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.

Definir a política de entrada

  1. Selecione API da Conferência de Demonstração.Select Demo Conference API.

  2. Selecione Todas as operações.Select All operations.

  3. Na parte superior do ecrã, selecione o separador Design.On the top of the screen, select Design tab.

  4. Na seção processamento de entrada , clique no </> ícone.In the Inbound processing section, click the </> icon.

  5. Posicione o cursor no interior do elemento <entrada> .Position the cursor inside the <inbound> element.

  6. Na janela direita, em Políticas de restrição de acesso, clique em + Limitar taxa de chamadas por chave.In the right window, under Access restriction policies, click + Limit call rate per key.

  7. Modifique o código rate-limit-by-key (no elemento de <entrada> ) para o seguinte código: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)" />
    

Testar as transformaçõesTest the transformations

Neste momento, se examinar o código no editor de código, as suas políticas serão semelhantes ao seguinte: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>

O resto desta secção testa as transformações de política que definiu neste artigo.The rest of this section tests policy transformations that you set in this article.

Testar os cabeçalhos de resposta removidosTest the stripped response headers

  1. Selecione API da Conferência de Demonstração.Select Demo Conference API.

  2. Selecione o separador Teste.Select the Test tab.

  3. Clique na operação GetSpeakers.Click the GetSpeakers operation.

  4. Prima Enviar.Press Send.

    Como pode ver, os cabeçalhos foram removidos:As you can see the headers have been stripped:

    Políticas

Testar o URL substituídoTest the replaced URL

  1. Selecione API da Conferência de Demonstração.Select Demo Conference API.

  2. Selecione o separador Teste.Select the Test tab.

  3. Clique na operação GetSpeakers.Click the GetSpeakers operation.

  4. Prima Enviar.Press Send.

    Como pode ver, o URL foi substituído.As you can see the URL has been replaced.

    Políticas

Testar o limite de taxa (limitação)Test the rate limit (throttling)

  1. Selecione API da Conferência de Demonstração.Select Demo Conference API.

  2. Selecione o separador Teste.Select the Test tab.

  3. Clique na operação GetSpeakers.Click the GetSpeakers operation.

  4. Prima Enviar três vezes seguidas.Press Send three times in a row.

    Depois de enviar o pedido 3 vezes, obterá a resposta 429 Demasiados pedidos.After sending the request 3 times, you get 429 Too many requests response.

  5. Aguarde 15 segundos e prima Enviar novamente.Wait 15 seconds or so and press Send again. Neste momento, deve obter uma resposta 200 OK.This time you should get a 200 OK response.

    Limitação

VídeoVideo

Passos SeguintesNext steps

Neste tutorial, ficou a saber como:In this tutorial, you learned how to:

  • Transformar uma API para remover os cabeçalhos de respostaTransform an API to strip response headers
  • Substituir os URLs originais no corpo de resposta da API pelos URLs de gateway de APIMReplace original URLs in the body of the API response with APIM gateway URLs
  • Proteger uma API ao adicionar a política de limite de taxas (limitação)Protect an API by adding rate limit policy (throttling)
  • Testar as transformaçõesTest the transformations

Avance para o tutorial seguinte:Advance to the next tutorial: