0

我们可以从 Azure VM 对 Azure 函数进行 REST API 调用吗?我们无法存储 API 的用户名和密码。我们可以使用任何其他身份验证来调用 azure 函数吗?例如:托管身份、证书?

4

1 回答 1

1

是的,您可以使用托管身份 (MSI) 获取令牌,然后使用令牌对您的 azure 函数进行 REST API 调用,请按照以下步骤操作。

1.导航到门户中的 VM -> Identity-> 启用系统分配的标识。

2.导航到门户中的功能应用 -> Authentication / Authorization-> 使用 Azure AD auth 配置您的功能应用,按照此文档进行操作,不要忘记设置Log in with Azure Active Directory,配置后,需要一段时间才能为您创建一个 AD 应用功能应用程序,它最终会如下所示。

在此处输入图像描述

3.然后在函数应用中,创建一个HTTP触发器进行测试,注意:它Authorization level需要设置为Anonymous

在此处输入图像描述

4.在我的示例中,我RDP进入VM,然后使用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 levelFunction,禁用 Azure AD 身份验证Authentication / Authorization,然后使用如下命令。

Invoke-RestMethod -Uri 'https://joyfun111.azurewebsites.net/api/HttpTrigger1?code=10X/IKJIeElrCRIxxxxH6A==&name=world' -Method POST -UseBasicParsing

在此处输入图像描述

您可以在功能页面中获取功能网址。

在此处输入图像描述

于 2020-10-28T07:52:27.803 回答