Можем ли мы выполнять вызовы REST API к лазурной функции с виртуальной машины Azure? Мы не можем хранить имя пользователя и пароль для API. Есть ли какая-либо другая аутентификация, которую мы можем использовать для вызова функции Azure? например: управляемая идентификация, сертификаты?
Вызов функции Azure из виртуальной машины с использованием управляемого удостоверения и REST API
Ответы (1)
Да, вы можете использовать управляемую идентификацию (MSI) для получения токена, а затем использовать этот токен для вызова REST API к вашей функции Azure. Выполните следующие действия.
1. Перейдите к виртуальной машине на портале - ›Identity
-› включите идентификацию, назначенную системой.
2. Перейдите к приложению-функции на портале - ›Authentication / Authorization
-› настройте приложение-функцию с аутентификацией Azure AD, выполните следующие действия: doc, не забудьте установить Log in with Azure Active Directory
, после настройки потребуется некоторое время для создания приложение AD для вашего функционального приложения, оно, наконец, будет выглядеть, как показано ниже.
3. Затем в приложении-функции создайте триггер HTTP для проверки, Примечание: его Authorization level
необходимо установить как Anonymous
.
4. В моем примере я использую RDP для виртуальной машины, затем использую powershell для получения токена, а затем использую токен для вызова функции, в вашем случае вы также можете использовать другие языки в зависимости от ваших требований. Имя моей функции joyfun111
, замените его на ваше в скрипте, у меня она работает.
$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://joyfun111.azurewebsites.net' -Method GET -Headers @{Metadata="true"}
$content = $response.Content | ConvertFrom-Json
$Token = $content.access_token
Invoke-RestMethod -Uri 'https://joyfun111.azurewebsites.net/api/HttpTrigger1?name=world' -Method POST -Headers @{Authorization="Bearer $Token"}
Обновление:
Если это так, вам просто нужно использовать функциональную клавишу вместе с URL-адресом функции, изменить Authorization level
на Function
, отключить аутентификацию Azure AD в Authentication / Authorization
, а затем использовать команду, как показано ниже.
Invoke-RestMethod -Uri 'https://joyfun111.azurewebsites.net/api/HttpTrigger1?code=10X/IKJIeElrCRIxxxxH6A==&name=world' -Method POST -UseBasicParsing
Вы можете получить URL-адрес функции на странице функции.