Как правильно аутентифицировать Azure функцию с помощью Azure DevOps REST API? - PullRequest
0 голосов
/ 15 апреля 2020

Цель состоит в том, чтобы разработать функцию Azure, которая должна внести некоторые изменения в Azure DevOps (например, обновить рабочие элементы, вики-страницы и т. Д. c), которые запускаются Azure ловушкой конвейерного сервиса. Могу ли я использовать идентификатор системы функций в этом случае? И как я могу дать разрешения для этого удостоверения для вызова DevOps REST API?

1 Ответ

0 голосов
/ 16 апреля 2020

Я не уверен, что это лучший способ, но вы можете создать PAT токен . Поскольку вы будете использовать его для функции Azure, я рекомендую использовать Azure KeyVault для хранения этого токена.

Здесь у вас есть пример, как вы можете использовать его для извлечения проектов из Azure DevOps:

public static async void GetProjects()
{
    try
    {
        var personalaccesstoken = "PAT_FROM_WEBSITE";

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Add(
                new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                Convert.ToBase64String(
                    System.Text.ASCIIEncoding.ASCII.GetBytes(
                        string.Format("{0}:{1}", "", personalaccesstoken))));

            using (HttpResponseMessage response = await client.GetAsync(
                        "https://dev.azure.com/{organization}/_apis/projects"))
            {
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Здесь у вас есть документация для обновления рабочих элементов. Я протестировал это с почтальоном, но мне удалось отредактировать рабочий элемент с помощью PAT.

...