Получить Accesstoken для Azure DevOps REST API 5.1 - PullRequest
0 голосов
/ 06 января 2020

В нашем приложении мы хотим получить токен доступа. С помощью этого токена мы хотим выполнить определенные действия с Azure DevOps rest API 5.1.

Я попробовал предлагаемую документацию от Microsoft для OAuth2 (https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?view=azure-devops) и PAT. Это всегда возвращает 203 ответа в результате. Кто-нибудь знает обходной путь для этой проблемы?

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Чтобы узнать, как пройти аутентификацию для вызова API, вы можете обратиться к: Аутентификация

Вот пример использования OAuth2 с ADAL: https://github.com/microsoft/azure-devops-auth-samples/blob/master/ManagedClientConsoleAppSample/Program.cs

А вот быстрый пример с использованием PAT:

    class Program
    {
        public static string personalaccesstoken = "erxvtg*****6aljqa";
        public static string organization = "jack0503";
        public static string project = "keyvault";

        static void Main(string[] args)
        {
            Console.ReadLine();
            GetProjects();
            Console.ReadLine();
        }


        public static async void GetProjects()
        {
            try
            {
                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());
            }
        }
    }
0 голосов
/ 07 января 2020

Согласно моему тесту, мы можем вызвать Azure DevOps rest API с Azure токеном доступа к рекламе. Для получения более подробной информации, пожалуйста, обратитесь к следующим шагам 1. Зарегистрируйте приложение Azure AD enter image description here

Настройка приложений

a. Создать секрет клиента

b. Настроить разрешения

enter image description here

Получить токен

 # get code
GET  https://login.microsoftonline.com/{tenant}/oauth2/authorize?
client_id=<your app client id>
&response_type=code
&redirect_uri=<>
&response_mode=query
&resource=499b84ac-1321-427f-aa17-267ca6975798
&state=12345

#Get token
Post https://login.microsoftonline.com/{tenant}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&client_id=<>
&code=<>
&redirect_uri=https%3A%2F%2Flocalhost%3A12345
&resource=499b84ac-1321-427f-aa17-267ca6975798
&client_secret=<>
Call Rest API enter image description here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...