Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предыдущая часть: требования к проверке подлинности
В этом примере основное приложение использует сторонний API, защищенный ключом доступа. В этом разделе показано, как API используется Функции Azure, но те же принципы применяются независимо от того, как или где реализован API , независимо от того, размещается ли приложение на другом облачном поставщике или традиционном веб-сервере.
Ключевым аспектом является то, что все клиентские запросы к защищенной конечной точке должны включать ключ доступа, который приложение должно безопасно управлять. В этом разделе представлен обзор реализации такого API с помощью функций Azure, но вы можете адаптировать принципы к конкретным потребностям.
Пример реализации стороннего API
Пример стороннего API — простая конечная точка, которая возвращает случайное число от 1 до 999. API защищен ключом доступа, который необходимо предоставить в запросе для доступа к конечной точке. Для демонстрационных целей этот API развертывается в конечной точке https://msdocs-example-api.azurewebsites.net/api/RandomNumber. Чтобы вызвать API, необходимо предоставить ключ d0c5atM1cr0s0ft доступа в ?code= параметре URL-адреса или в 'x-functions-key' свойстве заголовка HTTP. Например, после развертывания приложения и API попробуйте этот URL-адрес в браузере или curl: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft
Если ключ доступа действителен, конечная точка возвращает ответ JSON, содержащий одно свойство , значение которого — число от 1 до 999, например {"value": 959}.
Конечная точка реализована в Python и развернута в Функциях Azure. Код выглядит следующим образом:
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))
В примере репозитория этот код находится в разделе third_party_api/RandomNumber/__init__.py. Папка , RandomNumber, предоставляет имя функции и __init__.py содержит код. Другой файл в папке function.json описывает, когда функция запускается. Другие файлы в родительской папке third_party_api содержат сведения о приложении-функции Azure, на котором размещена сама функция.
Чтобы развернуть код, скрипт подготовки примера выполняет следующие действия.
Создайте резервную учетную запись хранения для функций Azure с помощью команды
az storage account createAzure CLI для управления состоянием и внутренними операциями.Создайте приложение Функций Azure с помощью команды
az function app createAzure CLI.После ожидания в течение 60 секунд завершения подготовки узла разверните код с помощью команды Функции Azure Core Tools
func azure functionapp publish.Назначьте ключ
d0c5atM1cr0s0ftдоступа функции. (См. раздел "Защита функций Azure " для фонового доступа к ключам функций.)В скрипте развертывания этот шаг осуществляется с использованием команды az functionapp function keys set Azure CLI.
Комментарии включаются для демонстрации того, как выполнить этот шаг через вызов REST API к API управления ключами функций при необходимости. Чтобы вызвать этот REST API, сначала необходимо выполнить другой вызов REST API, чтобы получить главный ключ приложения-функции.
Вы также можете назначить ключи доступа на портале Azure. На странице приложения "Функции" выберите "Функции", а затем выберите конкретную функцию для защиты (которая называется RandomNumber в этом примере). На странице функции выберите "Ключи функции" , чтобы открыть страницу, в которой можно создать и управлять этими ключами.