Tutorial: Transformar e proteger sua API

APLICA-SE A: todas as camadas do Gerenciamento de API

Neste tutorial, você aprenderá a configurar políticas comuns para transformar sua API. É aconselhável transformar sua API para que ela não revele informações de back-back privado. Transformar uma API pode ajudá-lo a ocultar as informações da pilha de tecnologia em execução no back-end ou ocultar as URLs originais que aparecem no corpo da resposta HTTP da API.

Este tutorial também explica como adicionar proteção à API de back-end configurando uma política de limite de taxa para que a API não seja excessivamente utilizada pelos desenvolvedores. Para obter mais opções de política, consulte Políticas de Gerenciamento de API.

Observação

Por padrão, o Gerenciamento de API configura uma política global forward-request. A política forward-request é necessária para que o gateway conclua uma solicitação para um serviço de back-end.

Neste tutorial, você aprenderá como:

  • Transformar uma API para retirar os cabeçalhos de resposta
  • Substituir as URLs originais no corpo da resposta da API por URLs de gateway de API Management
  • Proteger uma API adicionando uma política de limite de taxa (limitação)
  • Testar as transformações

Políticas no portal

Pré-requisitos

Navegar até a instância de Gerenciamento de API

  1. No portal do Azure, pesquise e selecione serviços de Gerenciamento de API.

    Selecione Serviços de Gerenciamento de API

  2. Na página Serviços de Gerenciamento de API, selecione a sua instância de Gerenciamento de API.

    Selecione a sua instância de Gerenciamento de API

Transformar uma API para retirar os cabeçalhos de resposta

Esta seção mostra como ocultar os cabeçalhos HTTP que você não deseja mostrar aos usuários. Por exemplo, exclua os seguintes cabeçalhos na resposta HTTP:

  • X-Powered-By
  • X-AspNet-Version

Testar a resposta original

Para ver a resposta original:

  1. Em sua instância de serviço do Gerenciamento de API, selecione APIs.
  2. Selecione API de Conferência de Demonstração em sua lista de APIs.
  3. Selecione a guia Testar na parte superior da tela.
  4. Selecione a operação GetSpeakers e selecione Enviar.

A resposta original da API deve se parecer com a seguinte resposta:

Resposta da API original

Como você pode ver, a resposta inclui os cabeçalhos X-AspNet-Version e X-Powered-By.

Definir a política de transformação

Este exemplo mostra como usar o editor de políticas baseado em formulário, o que ajuda a configurar muitas políticas sem precisar editar diretamente as instruções XML de política.

  1. Selecione API de Conferência de Demonstração>Design>Todas as operações.

  2. Na seção Processamento de saída, selecione + Adicionar política.

    Navegar para a política de saída

  3. Na janela Adicionar política de saída, selecione Definir cabeçalhos.

    Definir política de cabeçalho HTTP

  4. Para configurar a política de cabeçalhos definidos, faça o seguinte:

    1. Em Nome, insira X-Powered-By. Em Ação, selecione excluir.
    2. Selecione + Adicionar cabeçalho.
    3. Em Nome, insira X-AspNet-Version. Em Ação, selecione excluir.

    Definir cabeçalho HTTP

  5. Selecione Salvar. Dois elementos de política de cabeçalho definido aparecem na seção Processamento de saída.

Substituir as URLs originais no corpo da resposta da API por URLs de gateway de API Management

Essa seção mostra como ocultar as URLs originais que aparecem no corpo da resposta HTTP da API com as URLs do gateway de Gerenciamento de API. É aconselhável ocultar as URLs de back-end originais dos usuários.

Testar a resposta original

Para ver a resposta original:

  1. Selecione API de Conferência de Demonstração>Testar.

  2. Selecione a operação GetSpeakers e selecione Enviar.

    Como você pode ver, a resposta inclui as URLs de back-end originais:

    URLs originais na resposta

Definir a política de transformação

Neste exemplo, você usa o editor de código de política para adicionar o snippet XML de política diretamente à definição de política.

  1. Selecione API de Conferência de Demonstração>Design>Todas as operações.

  2. Na seção Processamento de saída, selecione o ícone do editor de código (</>).

    Navegar até o editor de código de política de saída

  3. Posicione o cursor dentro do elemento <outbound> em uma linha em branco. Em seguida, selecione Mostrar snippets no canto superior direito da tela.

    Selecionar mostrar snippets de código

  4. Na janela à direita, em Políticas de transformação, selecione Mascarar URLs no conteúdo.

    O elemento <redirect-content-urls /> é adicionado ao cursor.

    Mascarar URLs no conteúdo

  5. Clique em Salvar.

Proteger uma API adicionando a política de limite de taxa (limitação)

Esta seção mostra como adicionar proteção à API de back-end configurando limites de taxa para que a API não seja excessivamente utilizada pelos desenvolvedores. Neste exemplo, o limite é definido como três chamadas por 15 segundos para cada ID de assinatura. Depois de 15 segundos, um desenvolvedor pode repetir a chamada a uma API.

  1. Selecione API de Conferência de Demonstração>Design>Todas as operações.

  2. Na seção Processamento de entrada, selecione o ícone do editor de código (<\>).

    Navegar até a política de entrada

  3. Posicione o cursor dentro do elemento <inbound> em uma linha em branco. Em seguida, selecione Mostrar snippets no canto superior direito da tela.

    Definir política de entrada

  4. Na janela à direita, em Políticas de restrição de acesso, clique em Limitar taxa de chamada por chave.

    O elemento <rate-limit-by-key /> é adicionado ao cursor.

    Selecionar limitar taxa de chamadas por tecla

  5. Modifique o código <rate-limit-by-key /> no elemento <inbound> para o seguinte código. Em seguida, selecione Salvar.

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

Testar as transformações

Nesse ponto, se você examinar o código no editor de códigos, suas políticas serão semelhantes ao código a seguir:

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

O restante desta seção testa as transformações de política que você definir neste artigo.

Testar os cabeçalhos de resposta retirados

  1. Selecione API de Conferência de Demonstração>Testar.

  2. Selecione a operação GetSpeakers e selecione Enviar.

    Como você pode ver, os cabeçalhos foram retirados:

    Cabeçalhos de resposta retirados

Testar a URL substituída

  1. Selecione API de Conferência de Demonstração>Testar.

  2. Selecione a operação GetSpeakers e selecione Enviar.

    Como você pode ver, as URLs são substituídas.

    URLs substituídas

Testar o limite de taxa (limitação)

  1. Selecione API de Conferência de Demonstração>Testar.

  2. Selecione a operação GetSpeakers. Selecione Enviar três vezes seguidas.

    Depois de enviar a solicitação três vezes, você obtém a resposta 429 Muitas solicitações.

    Muitas solicitações

  3. Aguarde 15 segundos ou mais e selecione Enviar novamente. Neste momento, você deve obter uma resposta 200 OK.

Próximas etapas

Neste tutorial, você aprendeu a:

  • Transformar uma API para retirar os cabeçalhos de resposta
  • Substituir as URLs originais no corpo da resposta da API por URLs de gateway de API Management
  • Proteger uma API adicionando a política de limite de taxa (limitação)
  • Testar as transformações

Prosseguir para o próximo tutorial: