Continuando a série de artigos, sobre como publicar suas API’s utilizando o API Gateway da Azure, iremos neste artigo iremos ver como gerenciar suas API’s através de produtos e como realizar o gerenciamento dos mesmos.
A criação de produtos é importante para que você possa agrupar API’s e definir políticas de acesso, configurações específicas ou apontamentos para um determinado grupo de API’s de uma vez só ao invés de aplicar regras que são generalizadas em cada API específica.
Dentro da aba de produtos, você irá ver que já existem 2 produtos criados previamente. Porém iremos criar um novo produto, clicando no botão Add e preenchendo as informações:
Antes de confirmar a criação do produto, na parte de seleção de API’s, selecione a API que criamos anteriormente. Com o produto criado, a visão do seu painel de controle, deverá ser algo próximo disto:
Agora iremos ver algumas possibilidades que podemos realizar com o API Manager. Dentro do seu produto recém criado, acesse o menu de policies:
As políticas são um recurso poderoso do sistema que permitem ao desenvolvedor alterar o comportamento da API por meio de um arquivo de configuração. As políticas são um conjunto de instruções executadas em sequência, no momento da solicitação ou da resposta de uma API. Instruções populares incluem a conversão do formato de XML para JSON e limite de taxa de chamada para restringir a quantidade de chamadas recebidas de um consumidor. Muitas políticas estão disponíveis pré-configuradas já no portal em modo “self-service”. Veja a lista de algumas políticas que você pode utilizar:
Políticas de restrição de acesso:
- Verificar cabeçalho HTTP – Impõe a existência e/ou valor de um cabeçalho HTTP.
- Limitar a taxa de chamada por assinatura – Previne picos de uso da API limitando a taxa de chamada, baseado em assinatura.
- Limitar a taxa de chamada por chave – Previne picos de uso da API limitando a taxa de chamada, baseado em chave.
- Restringir IP do autor da chamada – Filtra (permite/recusa) chamadas de endereços IP específicos e/ou intervalos de endereços.
- Definir a cota de uso por assinatura – Permite que você aplique uma cota renovável ou permanente de volume de chamada e/ou largura de banda, baseado em assinatura.
- Definir a cota de uso por chave – Permite que você aplique uma cota renovável ou permanente de volume de chamada e/ou largura de banda, baseado em chave.
- Validar JWT – Impõe a existência e a validade de JWT extraída de um cabeçalho HTTP especificado ou um parâmetro de consulta especificado.
Políticas avançadas:
- Fluxo de controle: aplica condicionalmente declarações de política com base na avaliação de expressões boolianas.
- Encaminhar solicitação -Encaminha a solicitação ao serviço de back-end.
- Simultaneidade de limite – impede que as políticas embutidas sejam executadas mais do que o número especificado de solicitações por vez.
- Registrar em log no Hub de Eventos: envia mensagens no formato especificado para um destino de mensagem definido por uma entidade Agente.
- Resposta fictícia – anula a execução de pipeline e retorna uma resposta fictícia diretamente para o chamador.
- Repetir – repete a execução das instruções de política, se e até que a condição seja atendida. A execução será repetida em intervalos de tempo especificados até e a contagem de repetições especificada.
- Retornar resposta – Anula a execução de pipeline e retorna a resposta especificada diretamente para o autor da chamada.
- Enviar solicitação unidirecional – Envia uma solicitação para a URL especificada sem aguardar uma resposta.
- Enviar solicitação – Envia uma solicitação para a URL especificada.
- Definir proxy HTTP – permite a você, por meio de um proxy HTTP, reencaminhar solicitações encaminhadas.
- Definir variável: persiste um valor em uma variável de contexto nomeada para acesso posterior.
- Definir método de solicitação – Permite alterar o método HTTP de uma solicitação.
- Definir código de status – altera o código de status de HTTP para o valor especificado.
- Rastreamento – adiciona uma cadeia de caracteres para a saída do Inspetor de API.
- Aguarde: espera pelas políticas Enviar solicitação, Obter valor do cache ou Fluxo de controle incorporadas serem concluídas antes de prosseguir.
Políticas de autenticação:
- Autenticar com o Basic – Autenticar com um serviço de back-end usando a autenticação Básica.
- Autenticar com o certificado de cliente – Autenticar com um serviço de back-end usando certificados de cliente.
- Autenticar com identidade gerenciada -autenticar com um serviço de back-end usando um identidade gerenciada.
Políticas de cache:
- Obter do cache – Executa a pesquisa em cache e retorna uma resposta válida armazenada em cache quando uma estiver disponível.
- Armazenar em cache – Armazena a resposta em cache de acordo com a configuração de controle de cache especificada.
- Obter valor do cache – Recupere um item em cache por chave.
- Armazenar valor em cache -Armazene um item no cache por chave.
- Remover o valor do cache – remove um item no cache por chave.
Políticas entre domínios:
- Permitir chamadas entre domínios – Torna a API acessível por meio de clientes Adobe Flash e Microsoft Silverlight baseados em navegadores.
- CORS – Adicionar suporte de compartilhamento de recursos entre origens (CORS) a uma operação ou a uma API para permitir chamadas entre domínios de clientes baseados em navegadores.
- JSONP – Adiciona suporte JSON com preenchimento (JSONP) a uma operação ou a uma API para permitir chamadas entre domínios de clientes JavaScript baseados em navegadores.
Políticas de transformação:
- Converter JSON para XML – Converte o corpo da solicitação ou da resposta de JSON para XML.
- Converter XML para JSON – Converte o corpo da solicitação ou da resposta de XML para JSON.
- Localizar e substituir cadeia no corpo – Encontra uma subcadeia de uma solicitação ou resposta e a substitui por outra subcadeia.
- Mascarar URLs no conteúdo – Reescreve (mascara) os links no corpo da resposta, para que eles apontem para o link equivalente por meio do gateway.
- Definir o serviço de back-end – Altera o serviço de back-end para uma solicitação de entrada.
- Definir corpo – Define o corpo da mensagem para solicitações de entrada e saída.
- Definir cabeçalho HTTP – Atribui um valor a uma resposta e/ou cabeçalho de resposta existente ou adiciona uma nova resposta e/ou cabeçalho de resposta.
- Definir parâmetro de cadeia de consulta – Adiciona, substitui o valor ou exclui parâmetros de cadeias de consulta de solicitação.
- Reescrever URL – Converte a URL de uma solicitação de sua forma pública em sua forma esperada pelo serviço Web.
- Transformar XML usando um XSLT: aplica uma transformação XSL para XML no corpo da solicitação ou da resposta.
No próximo artigo, iremos criar algumas políticas para colocarmos em prática algumas destas opções e melhorarmos a segurança da nossa API.