Article image
Janei Pereira
Janei Pereira14/04/2025 19:53
Compartilhe

Como Publicar e Proteger uma API no Azure com API Management e Subscription Key

    Publicar uma API na nuvem e protegê-la adequadamente é uma etapa fundamental para desenvolvedores que trabalham com microsserviços, aplicações web ou integrações de sistemas. O Azure oferece uma maneira simples e poderosa de fazer isso através do App Service e do API Management (APIM).

    Neste artigo, vamos explorar um passo a passo didático para:

    • Criar e publicar uma API no Azure
    • Importá-la no API Management
    • Aplicar proteção com Subscription Key (chave de subscrição)
    Este guia foi feito pensando em quem está iniciando na plataforma Azure. Vamos focar em boas práticas e evitar armadilhas comuns.

    ✨ Visão Geral da Arquitetura

    1. App Service: hospeda sua API
    2. API Management: atua como gateway, adicionando proteção, monitoramento e versões
    3. Subscription Key: chave obrigatória para acessar a API através do APIM

    1. Criar uma API local em .NET 8

    Começamos com um projeto simples em .NET 8 (Minimal API):

    mkdir WeatherApi && cd WeatherApi
    dotnet new webapi --no-https --framework net8.0
    

    No Program.cs, mantenha o endpoint /weatherforecast:

    app.MapGet("/weatherforecast", () =>
    {
      var forecast = Enumerable.Range(1, 5).Select(index =>
          new WeatherForecast(
              DateTime.Now.AddDays(index),
              Random.Shared.Next(-20, 55),
              "Sunny"
          ))
          .ToArray();
    
      return forecast;
    });
    

    Compile e teste localmente:

    dotnet run
    

    Acesse no navegador:

    http://localhost:5000/weatherforecast
    

    2. Fazer deploy no Azure (App Service)

    Requisitos:

    • Conta no Azure (Free Tier funciona)
    • Azure CLI instalado (az --version)
    • Login feito: az login

    Deploy com um comando:

    az webapp up \
    --name weather-api-demo \
    --resource-group MeuGrupo \
    --runtime "dotnet:8" \
    --location centralus
    
    Se ocorrer erro de cota na região (ex: "quota 0 instances"), tente centralus, southcentralus, westus2, etc.

    A URL gerada será parecida com:

    https://weather-api-demo.azurewebsites.net/weatherforecast
    

    3. Importar a API no API Management

    3.1 Criar o API Management (se ainda não existir)

    az apim create \
    --name meu-apim \
    --resource-group MeuGrupo \
    --publisher-name "Dev" \
    --publisher-email "dev@exemplo.com"
    

    3.2 Importar a API

    No portal do Azure:

    1. Acesse o recurso API Management
    2. Menu lateral > APIs > + Add API
    3. Escolha a opção "Create from Azure resource"
    4. Selecione App Service e vincule seu Web App

    4. Proteger a API com Subscription Key

    Por padrão, o API Management já protege suas APIs com chave de subscrição.

    Verificar configuração:

    1. Acesse sua API no APIM
    2. Clique no produto (ex: Starter)
    3. Marque "Require subscription"

    Obter uma chave de subscrição:

    1. Acesse Subscriptions > Starter > Crie uma subscrição
    2. Copie a primary key

    Testar com Postman:

    GET https://meu-apim.azure-api.net/weather/weatherforecast
    Ocp-Apim-Subscription-Key: <sua-chave>
    

    Sem essa chave, o acesso é negado com código 401 Unauthorized

    5. Dicas para evitar erros comuns

    • Erro de região sem quota: troque a região no az webapp up
    • Erro de SDK .NET: instale com dotnet-sdk-8.0 (Linux: via apt, dnf ou pacman)
    • Erro 401 no APIM: sempre envie a Subscription Key correta
    • Problemas no portal: atualize a página e verifique permissões da conta

    ✅ Conclusão

    Agora você tem uma API publicada no Azure, exposta de forma segura através do API Management, com controle de acesso básico via Subscription Key.

    Essa abordagem é ideal para testes, protótipos e ambientes de aprendizado. Em produção, considere também autenticação JWT ou OAuth2 com Azure AD.

    Se você quiser um repositório com exemplos, README, imagens e código .NET, comente aqui ou mande mensagem! ✨

    Compartilhe
    Comentários (3)
    Janei Pereira
    Janei Pereira - 15/04/2025 15:12

    DIO Community, JWT ou OAuth com certeza pode oferecer segurança aprimorada, principalmente para aplicativos ou sistemas onde isso é crucial como sistemas de pagamento online. Em um próximo artigo vou trazer essas informações e como implementar os testes, mas também podemos conferir o conteúdo em: https://web.dio.me/lab/api-de-pagamentos-segura-com-azure-api-management/learning/70542911-6a65-4bc4-b53b-10337150a4ad?back=/track/microsoft-azure-cloud-native

    DIO Community
    DIO Community - 15/04/2025 13:35

    Excelente artigo, Janei! Você abordou de maneira clara e detalhada o processo de publicar uma API no Azure, utilizando o App Service, o API Management e a implementação da proteção com Subscription Key. Essas práticas são essenciais para garantir que a API seja segura e acessível apenas para usuários autorizados. O passo a passo ficou muito bem organizado, com explicações detalhadas sobre como criar e testar a API, além de dicas para evitar erros comuns, o que é uma ótima forma de guiar os iniciantes na plataforma Azure.

    A explicação sobre como importar a API para o API Management e a proteção com Subscription Key é especialmente valiosa, pois dá uma base sólida para quem está começando a trabalhar com APIs e segurança no Azure. A dica de utilizar a Subscription Key para controle de acesso é simples, mas eficaz, garantindo que apenas clientes autorizados possam acessar os recursos da API.

    Agora que você nos mostrou o básico para configurar uma API segura, como você sugere que as empresas escale isso em um ambiente de produção, considerando questões como autenticação JWT ou OAuth2?

    JS

    Jean Slater - 14/04/2025 19:58

    eu encontrei uma série de dificuldades em publicar uma api de forma segura. vou tentar seguir esses passos