Как аутентифицировать клиента в функции Azure на основе маршрута - PullRequest
0 голосов
/ 07 июня 2018

Я разрабатываю мультитенантное приложение на Azure.Приложение собирает данные из IOT Hub и суммирует данные устройства по арендатору.Я хочу, чтобы каждый арендатор мог просматривать сводки своих устройств.

Для сбора данных об устройстве из IOT Hub у меня есть функция, которая получает данные об устройстве, суммирует их и сохраняет в таблице Azure, гдеPartionKey = tenantId и RowKey = DeviceId.

Чтобы позволить арендаторам просматривать сводные данные об их устройствах, у меня есть функция Azure, запускаемая по протоколу HTTP GET, с маршрутом, указанным в виде: https: //.azurewebsites.net/api/tenant/{tenantId} / deviceSummary TenantId, конечно, связан с входным параметром функции.

В функции, которую я запрашиваю в таблице Azure, где PartionKey = tenantId.

Очевидно, что мне нужно запретить использование арендаторамифункция Get для доступа к данным других арендаторов.Т.е. как-то проверить маршрут арендатора.

Первой идеей было создать функциональную клавишу для каждого арендатора, используя tenantId в качестве имени ключа.Затем при обработке запроса я получаю переданный ключ и с помощью API KeyStore проверяю, соответствует ли ключ (код) в запросе ключу, соответствующему tenantId в маршруте.

моя (невежественная) идея, как это сделать.Что такое «правильный» путь?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Я считаю, что «правильный» способ поиска - Аутентификация службы приложений Azure или EasyAuth . Функции Azure построены на тех же базовых базовых компонентах, что и Службы приложений Azure , поэтому вы можете использовать тот же механизм аутентификации.

Я бы сослался на этот блог публикация о функциях Azure и аутентификации службы приложений и в документации по службам приложений Azure в разделе Безопасность: Документация по аутентификации и авторизации .

0 голосов
/ 07 июня 2018

Я не уверен, сколько функциональных клавиш вы можете сгенерировать, поэтому, если у вас большое количество клиентов / арендаторов, это может быть проблемой.

Прокси-функции функций заслуживают изучения, так как вы можете указать другой URL-адрес и порядок параметров в вашей функции через прокси-сервер, а затем преобразовать его в ожидаемый формат ваших функций.https://docs.microsoft.com/en-us/azure/azure-functions/functions-proxies.

Управление API Azure (увеличивает стоимость) сможет предоставить шлюз / фасад, который позволит вам иметь различные пути / параметры URL, указывающие на одну и ту же функцию Azure.Может быть больше, чем нужно, если это небольшая система, но ее стоит изучить.Это также обеспечит некоторые другие полезные преимущества (операция IP-фильтрация, политики, измерение и т. Д.)

...