Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
Crie uma conta de armazenamento de backup para o Azure Functions com o comando CLI do Azure,
az storage account createpara gerenciar operações internas e de estado.Crie um aplicativo do Azure Functions com o comando CLI do Azure,
az function app create.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.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.