Partilhar 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 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, quer você hospede o aplicativo em outro provedor de nuvem ou em um servidor Web tradicional.

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

O exemplo de API de terceiros é 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 requisição para aceder ao endpoint. Para fins de demonstração, esta API é implementada no endpoint, https://msdocs-example-api.azurewebsites.net/api/RandomNumber. Para chamar a API, no entanto, deve fornecer a chave d0c5atM1cr0s0ft de acesso num ?code= parâmetro de URL ou numa 'x-functions-key' propriedade do cabeçalho HTTP. Por exemplo, depois de implantar o aplicativo e a API, tente este URL num navegador ou usando o 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", cujo valor é um número entre 1 e 999, como {"value": 959}.

O endpoint é desenvolvido em 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 é acionada. Outros arquivos na pasta pai third_party_api fornecem detalhes para o aplicativo Azure Function 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 backup para o Azure Functions com o comando 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 CLI do Azure, az function app create.

  3. Depois de aguardar 60 segundos para que o host seja totalmente provisionado, implante o código usando o comando Azure Functions Core Tools , func azure functionapp publish.

  4. Atribua a chave de acesso, d0c5atM1cr0s0ft, à função. (Consulte Protegendo o 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 de Funções , se desejado. Para chamar essa API REST, outra chamada de API REST deve ser feita primeiro para recuperar a chave mestra do aplicativo Function.

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