Transformar e proteger sua APITransform and protect your API

O tutorial mostra como transformar sua API para que ela não revele informações de back-end privadas.The tutorial shows how to transform your API so it does not reveal a private backend info. Por exemplo, você talvez queira 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. Você também pode desejar ocultar URLs originais que aparecem no corpo da resposta HTTP da API e em vez disso, redirecioná-las 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 à API de back-end configurando o limite de taxa com o Gerenciamento 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, você talvez queira limitar um número de chamadas realizadas para a API, para que não seja usada em excesso pelos desenvolvedores.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, consulte Políticas de Gerenciamento de APIFor more information, see API Management policies

Neste tutorial, você aprenderá como:In this tutorial, you learn how to:

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

Políticas

Pré-requisitosPrerequisites

Navegar até a instância de Gerenciamento de APIGo to your API Management instance

  1. No portal do Azure, pesquise e selecione Serviços de Gerenciamento de API.In the Azure portal, search for and select API Management services.

    Selecione Serviços de Gerenciamento de API

  2. Na tela Gerenciamento de API, selecione a sua instância de Gerenciamento de API.On the API Management screen, select your API Management instance.

    Selecione a sua instância de Gerenciamento de API

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

Esta seção mostra como ocultar os cabeçalhos HTTP que você não deseja mostrar aos usuários.This section shows how to hide the HTTP headers that you do not want to show to your users. Neste exemplo, os cabeçalhos a seguir são excluídos 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. Em sua instância de serviço do APIM, selecione APIs (em GERENCIAMENTO DE API).In your APIM service instance, select APIs (under API MANAGEMENT).
  2. Clique em API de Conferência de Demonstração na sua lista de APIs.Click Demo Conference API from your API list.
  3. Clique na guia Testar na parte superior da tela.Click the Test tab, on the top of the screen.
  4. Selecione a operação GetSpeakers.Select the GetSpeakers operation.
  5. Pressione o botão Enviar na parte inferior da tela.Press the Send button, at the bottom of the screen.

A resposta original deve se parecer com esta: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 de Conferência de Demonstração.Select Demo Conference API.

  2. Na parte superior da tela, selecione a guia Design.On the top of the screen, select Design tab.

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

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

  5. Posicione o cursor dentro do elemento <outbound> .Position the cursor inside the <outbound> element.

  6. Na janela à direita, em Políticas de transformação, clique em + Definir cabeçalho HTTP duas vezes (para inserir dois snippets de código 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 <outbound> para que se pareça com este: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 Salvar .Click the Save button.

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

Esta seção mostra como ocultar URLs originais que aparecem no corpo da resposta HTTP da API e em vez disso, redirecioná-las 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 de Conferência de Demonstração.Select Demo Conference API.

  2. Clique na guia Testar na parte superior da tela.Click the Test tab, on the top of the screen.

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

  4. Pressione o botão Enviar na parte inferior da tela.Press the Send button, at the bottom of the screen.

    Como você pode ver, a resposta original tem esta aparência: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 de Conferência de Demonstração.Select Demo Conference API.

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

  3. Na parte superior da tela, selecione a guia Design.On the top of the screen, select Design tab.

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

  5. Posicione o cursor dentro do elemento <outbound> .Position the cursor inside the <outbound> element.

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

  7. Modifique seu código find-and-replace (no elemento <outbound> ) para substituir a URL para corresponder ao 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 adicionando a política de limite de taxa (limitação)Protect an API by adding rate limit policy (throttling)

Esta seção mostra como adicionar a proteção para a API de back-end configurando limites de taxa.This section shows how to add protection for your backend API by configuring rate limits. Por exemplo, você talvez queira limitar um número de chamadas realizadas para a API, para que não seja usada em excesso pelos desenvolvedores.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 é definido como 3 chamadas por 15 segundos para cada ID de assinatura. Depois de 15 segundos, um desenvolvedor pode repetir a chamada à 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.

Definir política de entrada

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

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

  3. Na parte superior da tela, selecione a guia 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 dentro do elemento <inbound> .Position the cursor inside the <inbound> element.

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

  7. Mude o código rate-limit-by-key (no elemento <inbound> ) para o código a seguir: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

Nesse ponto, se você examinar o código no editor de códigos, suas políticas terão esta aparência: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 restante desta seção testa as transformações de política que você definir neste artigo.The rest of this section tests policy transformations that you set in this article.

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

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

  2. Selecione a guia Testar.Select the Test tab.

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

  4. Pressione Enviar.Press Send.

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

    Políticas

Testar a URL substituídaTest the replaced URL

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

  2. Selecione a guia Testar.Select the Test tab.

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

  4. Pressione Enviar.Press Send.

    Como você pode ver a URL foi substituída.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 de Conferência de Demonstração.Select Demo Conference API.

  2. Selecione a guia Testar.Select the Test tab.

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

  4. Pressione Enviar três vezes em uma linha.Press Send three times in a row.

    Depois de enviar a solicitação três vezes, você obtém a resposta 429 Muitas solicitações.After sending the request 3 times, you get 429 Too many requests response.

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

    Limitação

VídeoVideo

Próximas etapasNext steps

Neste tutorial, você aprendeu como:In this tutorial, you learned how to:

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

Prosseguir para o próximo tutorial:Advance to the next tutorial: