Функция Azure отображается как включенная анонимно, когда это не так

#azure #azure-functions #azure-function-app

#azure #azure-функции #azure-функция-приложение

Вопрос:

Я пытаюсь создать защищенную функцию Azure. Я создал ее на портале Azure с аутентификацией как «Функция». Я провел тест, и он работает нормально, однако, если я перейду в приложение function и нажму слева на «Аутентификация / авторизация», там будет написано: «Аутентификация службы приложений: отключена» с сообщением, в котором говорится: Анонимный доступ включен в приложении App Service. Пользователям не будет предложено войти в систему.

Однако, если я использую postman, мне необходимо включить строку запроса «code» в URL-адрес функции, чтобы она работала. Итак, у меня есть несколько вопросов:

1 — Требование иметь «код» в виде строки запроса, не означает ли это, что функция защищена и недоступна для анонимного доступа?

2- Если я выбрал функцию аутентификации при создании ее как «Функция», почему она показывает мне сообщение «Анонимный доступ включен …» на странице аутентификации / авторизации?

Я не знаком с идеей ключей / секретов и т.д., Поскольку я очень новичок в этом.

Ответ №1:

Я думаю, что вы путаете уровень авторизации HttpTrigger с аутентификацией / авторизацией сервера приложений underhood.

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

аутентификация / авторизация помогает настроить авторизацию на уровне службы приложений. В этом случае вы можете использовать токен, сгенерированный внешним поставщиком удостоверений (например, Azure Active Directory), для авторизации вызовов API. вы можете найти подробную информацию об аутентификации и авторизации в службе приложений и функциях Azure здесь

Комментарии:

1. Спасибо @Nezumi, но тогда в чем разница? Если само приложение функции анонимно, что бы это значило? Что, если функциональное приложение не является анонимным и защищенным, в то время как функции анонимны? Если все функции анонимны, какой смысл защищать само приложение?

2. привет @BR1 когда вы устанавливаете authorizationlevel на функцию Admin o в httptrigger, вы должны предоставить (или разрешить чтение) ключ вашей функции в соответствии с выбранным уровнем. Это означает, что вы должны предоставить информацию для вызова.

3. Когда вы устанавливаете авторизацию и аутентификацию в службе приложений, вы разрешаете кому-либо использовать токен (jwt) от поставщика удостоверений для вызова вашей функции. Настройка аутентификации в службе приложений позволяет вам не проверять токен в коде вашей функции, требуя эту часть для базовой службы приложений

4. У @Nezumi все правильно. Я думаю, что основная идея, которой не хватает @BR1, заключается в том, что одно функциональное приложение может иметь много функций. Родительское функциональное приложение использует блок аутентификации / авторизации. Дочерняя функция использует AuthorizationLevel , заданный вами во время разработки. Одно функциональное приложение имеет много функций, каждая из которых имеет разные уровни авторизации.

5. Спасибо @TroyWitthoeft Я понимаю, что у нас есть функциональное приложение, и оно содержит функции внутри. Но какой смысл устанавливать разрешения для самого приложения (контейнера), в то время как вы можете установить разрешения для функций внутри него. Не будут ли разрешения от родительского сервера конфликтовать с функциями внутри? Я не понимаю, почему у нас разные уровни разрешений.