Когда я запускаю приложение логики, оно показывает, что действие HTTP завершается неудачно, потому что оно не авторизовано.Может кто-нибудь сказать мне, что мне не хватает?
Во-первых, чтобы обойти несанкционированную ошибку, которую вы получаете в настоящее время, когда приложение логики вызывает вашу функцию Azure, вам нужно убедиться, что ваше приложение логикиполучает токен для правильной аутентификации в функции.
Я быстро опробовал логическое приложение с управляемой идентификацией, например, настройку для вызова функции Azure с включенной аутентификацией Azure AD.Ниже приведены подробные действия.
- Добавьте HTTP-действие в ваше приложение логики, которое будет использоваться для вызова вашей функции Azure
- В моем случае это был простой вызов GETс URL-адресом, таким как
https://<myfunctionapp>.azurewebsites.net/api/simplefunction
- В поле Аутентификация выберите
Managed Identity
Затем добавьте новый параметр и установите флажок Audience
Измените значение параметра Audience
на URI идентификатора приложения для регистрации приложения Azure AD вашего функционального приложения.В моем случае это значение выглядело как https://<myazureadtenant>.onmicrosoft.com/GUID
Это значение URI идентификатора приложения можно найти на портале Azure> Azure AD> Регистрация приложений> Регистрация для приложения-функции> Настройки> Свойства
На этом этапе вы сможете проверить свое логическое приложение и по крайней мере нормально вызвать функцию Azure (если ваша функция Azure не ограничивается только определеннымивызывающим абонентам или требуются определенные разрешения, подробнее об этом в ближайшее время.)
Вот как выглядит полное действие HTTP в моем случае.
Далее, после того, как базовый вызов из приложения логики (с управляемой идентификацией) к вашей функции Azure проходит аутентификацию должным образом, возникает вопрос, должно ли какое-либо приложение иметь возможность вызывать вашу функцию Azure или разрешать только определенным абонентам с определенными разрешениями.
Я подробно ответил на эту часть с помощью двух подходов в этой публикации SO - Есть ли способ защитить функцию Azure, которая будет вызываться только из определенного приложения логики Azure? .Второй подход в этом ответе очень декларативен, и вы даже можете создать несколько разных ролей приложений для разных типов абонентов, если это необходимо для вашей функции.