Compartilhar via


Parte 3: Exemplo de implementação de API de terceiros

Parte anterior: requisitos de autenticação

Em nosso cenário de exemplo, o aplicativo principal consome uma API de terceiros que é protegida com uma chave de acesso. Esta seção demonstra a API usando o Azure Functions, mas os mesmos princípios se aplicam independentemente de como ou onde a API é implementada, se você hospeda o aplicativo em outro provedor de nuvem ou em um servidor Web tradicional.

O aspecto principal é que todas as solicitações de cliente para o ponto de extremidade protegido devem incluir a chave de acesso, que o aplicativo deve gerenciar com segurança. Esta seção fornece uma visão geral de como implementar essa API usando o Azure Functions, mas você pode adaptar os princípios às suas necessidades específicas.

Exemplo de implementação de API de terceiros

A API de terceiros de exemplo é um endpoint simples que retorna um número aleatório entre 1 e 999. A API é protegida com uma chave de acesso, que deve ser fornecida na solicitação para obtenção de acesso ao endpoint. Para fins de demonstração, essa API é implantada no endpoint https://msdocs-example-api.azurewebsites.net/api/RandomNumber. No entanto, para chamar a API, você deve fornecer a chave de acesso d0c5atM1cr0s0ft em um parâmetro de URL ?code= ou em uma propriedade do cabeçalho HTTP 'x-functions-key'. Por exemplo, depois de implantar o aplicativo e a API, experimente essa URL em um navegador ou curl: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft.

Se a chave de acesso for válida, o ponto de extremidade retornará uma resposta JSON que contém uma única propriedade, "value", que é um número entre 1 e 999, como {"value": 959}.

O ponto de extremidade é implementado no Python e implantado no Azure Functions. O código é o seguinte:

import logging
import random
import json

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('RandomNumber invoked via HTTP trigger.')

    random_value = random.randint(1, 1000)
    dict = { "value" : random_value }
    return func.HttpResponse(json.dumps(dict))

No repositório de exemplo, esse código é encontrado em third_party_api/RandomNumber/__init__.py. A pasta , RandomNumber, fornece o nome da função e __init__.py contém o código. Outro arquivo na pasta, function.json, descreve quando a função é disparada. Outros arquivos na pasta pai third_party_api fornecem detalhes para o aplicativo de Função do Azure que hospeda a própria função.

Para implantar o código, o script de provisionamento do exemplo executa as seguintes etapas:

  1. Crie uma conta de armazenamento de suporte para o Azure Functions com o comando da CLI do Azure az storage account create para gerenciar operações internas e de estado.

  2. Crie um aplicativo do Azure Functions com o comando az function app createda CLI do Azure.

  3. Depois de esperar 60 segundos para que o host seja totalmente provisionado, implante o código usando o comando Ferramentas Principais do Azure Functions. func azure functionapp publish

  4. Atribua a chave d0c5atM1cr0s0ftde acesso à função. (Consulte o documento sobre a segurança do Azure Functions para obter informações básicas sobre chaves de função.)

    No script de provisionamento, essa etapa é realizada usando o comando az functionapp function keys set Azure CLI.

    Os comentários são incluídos para mostrar como fazer essa etapa por meio de uma chamada à API REST para a API de Gerenciamento de Chaves do Functions , se desejado. Para chamar essa API REST, outra chamada à API REST deve ser feita primeiro para recuperar a chave mestra do aplicativo de funções.

Você também pode atribuir chaves de acesso por meio do portal do Azure. Na página do aplicativo Functions, selecione Funções e, em seguida, selecione a função específica para proteger (que é nomeada RandomNumber neste exemplo). Na página da função, selecione Chaves de Função para abrir a página em que você pode criar e gerenciar essas chaves.