我们可以从Azure VM对azure函数进行REST API调用吗?我们无法存储API的用户名和密码。我们还可以使用其他身份验证来调用azure函数吗?例如:身份管理,证书?
答案 0 :(得分:1)
是的,您可以使用托管身份(MSI)来获取令牌,然后使用该令牌对您的azure函数进行REST API调用,请按照以下步骤操作。
1。导航到门户中的VM-> Identity
->启用系统分配的身份。
2。导航至门户中的功能应用程序-> Authentication / Authorization
->使用Azure AD身份验证配置功能应用程序,遵循此doc,不要忘记设置{{1} },配置完成后,需要一段时间才能为您的功能应用程序创建AD App,最后将显示如下。
3。然后在功能应用程序中,创建一个HTTP触发器以进行测试,注意:需要将其Log in with Azure Active Directory
设置为Authorization level
。
4。在我的示例中,我将RDP放入VM,然后使用powershell来获取令牌,然后使用令牌来调用函数,根据您的情况,您还可以根据需要使用其他语言。我的函数名是Anonymous
,在脚本中将其替换为您的函数名,它对我有效。
joyfun111
更新:
如果是这样,则只需要使用功能键以及功能url,将$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"}
更改为Authorization level
,在Function
中禁用Azure AD身份验证,然后使用命令如下所示。
Authentication / Authorization
您可以在功能页面上获取功能网址。