如何从 ARM 模板中检索 Azure Function App 的默认主机密钥?

约翰米尔斯

我可以使用Postman/admin/host/keys REST API检索 Azure Function App 的默认主机密钥

我使用部署凭据和针对https://{{Function-App-Kudu-Url}}/api/functions/admin/token. 然后我使用 Bearer 身份验证包含返回的令牌https://{{Function-App-Url}}/admin/host/keys/default并接收默认主机密钥。

但是,我想从 ARM JSON 模板中检索此值。谷歌搜索在揭示如何做到这一点方面并没有取得成果。

似乎listkeysorlistsecrets函数可能会起作用,但是我提供给他们的任何参数都不会返回密钥。

如何从 ARM JSON 模板中访问默认主机密钥?

蔡乔伊

您将能够在您的函数代码中使用函数宿主键,而且该函数会将您的函数键输出为 ARM 模板兼容字符串,因此您将能够在主 ARM 模板中引用它。

这里是函数代码,并适用于从 ARM 模板获取输入。

[FunctionName("GetKeys")]
public static async System.Threading.Tasks.Task<HttpResponseMessage> RunAsync([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req, TraceWriter log, ExecutionContext context)
{
  //get the publishing profile information from function argument
  var queryStrings=req.GetQueryParameterDictionary();
  string publishingUserName = "";
  string publishingPassword = "";  
  string hostKey = "";  
  queryStrings.TryGetValue("publishingUserName", out publishingUserName);
  queryStrings.TryGetValue("publishingPassword", out publishingPassword);
  //get the JWT token to call the KUDU Api
  var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes($"{publishingUserName}:{publishingPassword}"));
  var apiUrl = new Uri($"https://{Environment.GetEnvironmentVariable("WEBSITE_CONTENTSHARE")}.scm.azurewebsites.net/api");
  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
  }
  //get the key from KUDU
  var siteUrl = new Uri($"https://{Environment.GetEnvironmentVariable("WEBSITE_CONTENTSHARE")}.azurewebsites.net");
  using (var client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + JWT);
    string jsonResult = client.GetAsync($"{siteUrl}/admin/host/keys").Result.Content.ReadAsStringAsync().Result;
    dynamic resObject = JsonConvert.DeserializeObject(jsonResult);
    hostKey = resObject.keys[0].value;
  }
  var template = @"{'$schema': 'https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#', 'contentVersion': '1.0.0.0', 'parameters': {}, 'variables': {}, 'resources': [],
   'outputs': {
      'HostKey':{
            'value': {hostKey},
            'type' : 'string'
          }
        }
}";
  HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
  response.Content = new StringContent(template, System.Text.Encoding.UTF8, "application/json");
  return response; 
}

更详细的代码可以参考这篇文章

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Azure Function App ARM模板的Azure SignalR连接字符串

来自分类Dev

仅当在ARM模板中进行更改时,才如何更新Azure Key Vault中的机密或检查其是否存在

来自分类Dev

如何在ARM模板中检索Application Insight(位于另一个资源组中)的检测密钥?

来自分类Dev

ARM模板Azure Web App-如何指定堆栈设置(.NET,.NET Core等)?

来自分类Dev

无法从ARM模板中的存储资源获取Azure存储密钥

来自分类Dev

如何通过ARM模板在Azure CDN的CustomDomain中启用HTTPS

来自分类Dev

如何在ARM模板中创建Azure功能键?

来自分类Dev

如何在Azure CosmosDB Arm模板中定义PRIMARY KEY

来自分类Dev

如何在ssh中禁用严格的主机密钥检查?

来自分类Dev

如何在Azure资源组模板中检索Application Insights实例的检测密钥?

来自分类Dev

Azure ARM模板:功能限制,如何检测?

来自分类Dev

如何在Node.js堆栈上的Azure Function App中从Azure密钥库提取秘密密钥

来自分类Dev

Azure功能:如何使用C#代码以编程方式访问主机密钥?

来自分类Dev

Azure Function的ARM模板将忽略preWarmedInstanceCount设置

来自分类Dev

Azure ARM 模板问题

来自分类Dev

使用 ARM 模板在 Azure KeyVault 中生成 RSA 密钥

来自分类Dev

Azure ARM模板取决于:如何引用VM扩展?

来自分类Dev

如何获取Azure(ARM)部署模板的clientId和clientsecret

来自分类Dev

如何解决Azure ARM模板验证错误?

来自分类Dev

如何使用arm模板部署python azure函数?

来自分类Dev

Azure中的部署脚本ARM模板

来自分类Dev

在密钥保管库访问策略中引用托管身份时,Azure ARM模板ResourceNotFound错误

来自分类Dev

如何在powershell中获取azure arm模板的解释值(ex concat)

来自分类Dev

如何使用 azure 中的 arm 模板将 RBAC 分配给多个用户

来自分类Dev

如何将操作组导出到 Azure 中的 ARM 模板?

来自分类Dev

如何以编程方式在客户端中添加ssh主机密钥?

来自分类Dev

如何在SSH服务器中备份/还原主机密钥

来自分类Dev

如何转换ssh主机密钥?

来自分类Dev

我们应该如何在Function App中使用Azure密钥库?

Related 相关文章

  1. 1

    Azure Function App ARM模板的Azure SignalR连接字符串

  2. 2

    仅当在ARM模板中进行更改时,才如何更新Azure Key Vault中的机密或检查其是否存在

  3. 3

    如何在ARM模板中检索Application Insight(位于另一个资源组中)的检测密钥?

  4. 4

    ARM模板Azure Web App-如何指定堆栈设置(.NET,.NET Core等)?

  5. 5

    无法从ARM模板中的存储资源获取Azure存储密钥

  6. 6

    如何通过ARM模板在Azure CDN的CustomDomain中启用HTTPS

  7. 7

    如何在ARM模板中创建Azure功能键?

  8. 8

    如何在Azure CosmosDB Arm模板中定义PRIMARY KEY

  9. 9

    如何在ssh中禁用严格的主机密钥检查?

  10. 10

    如何在Azure资源组模板中检索Application Insights实例的检测密钥?

  11. 11

    Azure ARM模板:功能限制,如何检测?

  12. 12

    如何在Node.js堆栈上的Azure Function App中从Azure密钥库提取秘密密钥

  13. 13

    Azure功能:如何使用C#代码以编程方式访问主机密钥?

  14. 14

    Azure Function的ARM模板将忽略preWarmedInstanceCount设置

  15. 15

    Azure ARM 模板问题

  16. 16

    使用 ARM 模板在 Azure KeyVault 中生成 RSA 密钥

  17. 17

    Azure ARM模板取决于:如何引用VM扩展?

  18. 18

    如何获取Azure(ARM)部署模板的clientId和clientsecret

  19. 19

    如何解决Azure ARM模板验证错误?

  20. 20

    如何使用arm模板部署python azure函数?

  21. 21

    Azure中的部署脚本ARM模板

  22. 22

    在密钥保管库访问策略中引用托管身份时,Azure ARM模板ResourceNotFound错误

  23. 23

    如何在powershell中获取azure arm模板的解释值(ex concat)

  24. 24

    如何使用 azure 中的 arm 模板将 RBAC 分配给多个用户

  25. 25

    如何将操作组导出到 Azure 中的 ARM 模板?

  26. 26

    如何以编程方式在客户端中添加ssh主机密钥?

  27. 27

    如何在SSH服务器中备份/还原主机密钥

  28. 28

    如何转换ssh主机密钥?

  29. 29

    我们应该如何在Function App中使用Azure密钥库?

热门标签

归档