【发布时间】:2021-08-12 11:45:02
【问题描述】:
我想从其他函数调用一个天蓝色函数。要完成这项工作,我有以下代码:
public static class Function1
{
[FunctionName("Function1")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
ILogger log)
{
Uri m;
string t;
var data = new
{
name = "master"
};
string result = string.Empty;
var askForlicenseURL = "https://<myFunctionname>/api/HttpTrigger_StartOrchestrator";
var content = new StringContent(data.ToString(), Encoding.UTF8, "application/json");
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("x-functions-key", "Md5xxxxxxxxxxxxxxxxxxxxx0ij5A==");
using (HttpResponseMessage response = client.PostAsync(askForlicenseURL, content).Result)
using (HttpContent respContent = response.Content)
{
// ... Read the response as a string.
var tr = respContent.ReadAsStringAsync().Result;
// ... deserialize the response, we know it has a 'result' field
dynamic azureResponse = JsonConvert.DeserializeObject(tr);
// ... read the data we want
result = azureResponse.statusQueryGetUri;
var Header = response.Headers.Location;
}
}
}
在 Azure 功能键的 sted 中,我想使用系统分配的managed Identity。 (调用者的管理身份在目标 azure 函数中被授权为贡献者
而且我知道我可以使用持久功能,但在这种情况下我不想使用它:)
【问题讨论】:
-
独立于您的问题:请帮您自己(主要是您的应用程序性能)一个忙,并阅读 C# 中的 Async() 处理。你不应该做像
.PostAsync().Result这样的事情,而是让整个函数异步并使用await -
这里是一个指针如何启用 AAD 身份验证并使用 OAuth 令牌来验证 adatum.no/azure/azure-ad-authentication-in-azure-functions
-
但它不使用托管标识
-
这是正确的。但是“使用代码进行身份验证”部分基本上是您需要查看的地方。实际上,当您使用 MSI 时,它会容易得多,因为您可以直接使用令牌并且可以使用它来拨打电话。但第一个重要的部分是在其他功能上启用 AAD 身份验证
标签: c# http oauth azure-functions azure-managed-identity