繁体   English   中英

使用托管标识和 REST API 从 VM 调用 Azure 函数

[英]Calling Azure function from VM using managed identity and REST API

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

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

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

2.导航到门户中的函数应用 -> Authentication / Authorization -> 使用 Azure AD 身份验证配置您的函数应用,遵循此文档,不要忘记设置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 level更改为Function ,在Authentication / Authorization禁用 Azure AD 身份Authentication / Authorization ,然后使用如下命令。

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

在此处输入图片说明

您可以在函数页面中获取函数 url。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM