Как запустить конвейер с помощью приложения AAD ⇐ C#
Как запустить конвейер с помощью приложения AAD
Я могу запустить конвейер сборки, используя PAT (токен личного доступа), но я слышал, что это небезопасный метод. Поэтому я хочу запустить конвейер через токен приложения AAD.
var secretClientApplication = ConfidentialClientApplicationBuilder .Create(clientId) .WithClientSecret(clientSecret) .WithAuthority(новый Uri(авторитет)) .Строить(); var authResult = ожидание конфиденциального клиентского приложения .AcquireTokenForClient(новая строка[] {область действия}) .ExecuteAsync(); вар accessToken = authResult.AccessToken; // Установка базового URL-адреса для REST API Azure DevOps client.BaseAddress = new Uri($"{organizationUrl}/{project}/_apis/pipelines/{pipelineId}/"); client.DefaultRequestHeaders.Authorization = новое AuthenticationHeaderValue («Basic», accessToken); // Устанавливаем заголовок типа контента client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); вар запрос = новый JObject(); ресурсы вар = новый JObject(); запрос["ресурсы"] = ресурсы; вар репозитории = новый JObject(); ресурсы["репозитории"] = репозитории; вар сам = новый JObject(); репозитории["self"] = self; self["refName"] = "refs/heads/branch"; переменные вар = новый JObject(); запрос["переменные"] = переменные; вар Datacenter = новый JObject(); Центр обработки данных["значение"] = "Центр обработки данных"; переменные["Центр обработки данных"] = Центр обработки данных; //Передаем параметр в конвейер вар templateParameters = новый JObject(); запрос["Параметрышаблона"] = Параметрышаблона; templateParameters["Центр обработки данных"] = "Центр обработки данных"; Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(запрос)); var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); Ответ HttpResponseMessage = ждут client.PostAsync("runs?api-version=6.0-preview.1", content); // Проверяем, был ли запрос успешным если (ответ.IsSuccessStatusCode) { Console.WriteLine("Запуск конвейера успешно запущен."); } еще { Console.WriteLine($"Ошибка: {response.StatusCode} – {response.ReasonPhrase}"); строка responseBody = ожидание ответа.Content.ReadAsStringAsync(); Console.WriteLine($"Тело ответа: {responseBody}"); } Я создал приложение AAD, засекретил его и предоставил разрешения API для AzureDevops, но у меня все еще возникают проблемы с аутентификацией. Пожалуйста, помогите мне решить проблему или используйте другой вариант аутентификации
Я могу запустить конвейер сборки, используя PAT (токен личного доступа), но я слышал, что это небезопасный метод. Поэтому я хочу запустить конвейер через токен приложения AAD.
var secretClientApplication = ConfidentialClientApplicationBuilder .Create(clientId) .WithClientSecret(clientSecret) .WithAuthority(новый Uri(авторитет)) .Строить(); var authResult = ожидание конфиденциального клиентского приложения .AcquireTokenForClient(новая строка[] {область действия}) .ExecuteAsync(); вар accessToken = authResult.AccessToken; // Установка базового URL-адреса для REST API Azure DevOps client.BaseAddress = new Uri($"{organizationUrl}/{project}/_apis/pipelines/{pipelineId}/"); client.DefaultRequestHeaders.Authorization = новое AuthenticationHeaderValue («Basic», accessToken); // Устанавливаем заголовок типа контента client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); вар запрос = новый JObject(); ресурсы вар = новый JObject(); запрос["ресурсы"] = ресурсы; вар репозитории = новый JObject(); ресурсы["репозитории"] = репозитории; вар сам = новый JObject(); репозитории["self"] = self; self["refName"] = "refs/heads/branch"; переменные вар = новый JObject(); запрос["переменные"] = переменные; вар Datacenter = новый JObject(); Центр обработки данных["значение"] = "Центр обработки данных"; переменные["Центр обработки данных"] = Центр обработки данных; //Передаем параметр в конвейер вар templateParameters = новый JObject(); запрос["Параметрышаблона"] = Параметрышаблона; templateParameters["Центр обработки данных"] = "Центр обработки данных"; Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(запрос)); var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); Ответ HttpResponseMessage = ждут client.PostAsync("runs?api-version=6.0-preview.1", content); // Проверяем, был ли запрос успешным если (ответ.IsSuccessStatusCode) { Console.WriteLine("Запуск конвейера успешно запущен."); } еще { Console.WriteLine($"Ошибка: {response.StatusCode} – {response.ReasonPhrase}"); строка responseBody = ожидание ответа.Content.ReadAsStringAsync(); Console.WriteLine($"Тело ответа: {responseBody}"); } Я создал приложение AAD, засекретил его и предоставил разрешения API для AzureDevops, но у меня все еще возникают проблемы с аутентификацией. Пожалуйста, помогите мне решить проблему или используйте другой вариант аутентификации
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение