Azure Функция APP [Открытая функциональная клавиша] - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь создать функцию аутентификации для входа пользователя, но моя идея состоит в том, чтобы раскрыть «функциональные клавиши» остальных функций. Таким образом, мобильное приложение может заставить ключи вызывать звездочку, вызывая остальные функции.

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 18 февраля 2020

Если вы хотите управлять функциональной клавишей Azure, вы можете использовать API управления ключами для ее реализации. Для более подробной информации, пожалуйста, обратитесь к документу

  1. Получить функциональную клавишу
GET https://<functionappname>.azurewebsites.net/admin/functions/{functionname}/keys

Создать функциональную клавишу
PUT https://<functionappname>.azurewebsites.net/admin/functions/{functionname}/keys/{keyname}

{
  "name": "keyname",
  "value" : "keyvalue"
}

Код

tring 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
       }
// get key
     using (var client = new HttpClient())
     {
        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + JWT);
        var key = await client.GetAsync($"{siteUrl}/admin/functions/{functionName}/keys").Result.Content.ReadAsStringAsync();
      }

// create key
var map = new Dictionary<string, string>();
            map.Add("name", "keyName");
            map.Add("value", "keyVaule");


            using (var client = new HttpClient()) {

                var content = new StringContent(JsonConvert.SerializeObject(map), System.Text.Encoding.UTF8, "application/json");
                await client.PutAsync($"{siteUrl}/admin/functions/{functionname}/keys/{keyname}", content);


            }

Кроме того, согласно моим исследованиям, мы также можем использовать Azure REST API для управления Azure функциональная клавиша. Для получения более подробной информации, пожалуйста, обратитесь к

a. Создать Azure функциональную клавишу

b. Список Azure Функциональная клавиша

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...