Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você 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 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:
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.Crie um aplicativo do Azure Functions com o comando
az function app create
da CLI do Azure.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
Atribua a chave
d0c5atM1cr0s0ft
de 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.