gpt4 book ai didi

c# - 天蓝色函数 : How to access the host key programmatically using C# code?

转载 作者:行者123 更新时间:2023-12-04 04:24:31 26 4
gpt4 key购买 nike

我正在编写一个需要提供带有表单的 HTML 页面的 Azure Function App。该表单应回发到应用程序的端点之一。该应用程序应受 Azure 的 Authorization Key 保护。功能。

Azure 允许调用者以两种方式提供他/她的 key :

  1. 使用code请求查询参数。
  2. 使用 x-functions-clientid HTTP header 。

为了成功调用 Azure Function App 的另一个端点,我需要在请求的同时提供主机 key 。例如像这样:

    <form method='post' action='DoSomething?code={{{WHERE TO GET THIS FROM?}}}'>
<input name='someInput' />
<input type='submit' />
</form>

我正在使用 C# 生成 HTML 代码。以编程方式获取主机 key 的最可靠方法是什么?

最佳答案

您可以使用 Microsoft.Azure.Management.ResourceManager.Fluent 和 Microsoft.Azure.Management.Fluent 来做到这一点。

引用这个SO thread想要查询更多的信息。

string clientId = "client id";
string secret = "secret key";
string tenant = "tenant id";
var functionName ="functionName";
var webFunctionAppName = "functionApp name";
string resourceGroup = "resource group name";
var credentials = new AzureCredentials(new ServicePrincipalLoginInformation { ClientId = clientId, ClientSecret = secret}, tenant, AzureEnvironment.AzureGlobalCloud);
var azure = Azure
.Configure()
.Authenticate(credentials)
.WithDefaultSubscription();

var webFunctionApp = azure.AppServices.FunctionApps.GetByResourceGroup(resourceGroup, webFunctionAppName);
var ftpUsername = webFunctionApp.GetPublishingProfile().FtpUsername;
var username = ftpUsername.Split('\\').ToList()[1];
var password = webFunctionApp.GetPublishingProfile().FtpPassword;
var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes($"{username}:{password}"));
var apiUrl = new Uri($"https://{webFunctionAppName}.scm.azurewebsites.net/api");
var siteUrl = new Uri($"https://{webFunctionAppName}.azurewebsites.net");
string JWT;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", $"Basic {base64Auth}");

var result = client.GetAsync($"{apiUrl}/functions/admin/token").Result;
JWT = result.Content.ReadAsStringAsync().Result.Trim('"'); //get JWT for call funtion key
}
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + JWT);
var key = client.GetAsync($"{siteUrl}/admin/functions/{functionName}/keys").Result.Content.ReadAsStringAsync().Result;
}

关于c# - 天蓝色函数 : How to access the host key programmatically using C# code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58102105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com