Доступ Azure Devops с потоком предоставления учетных данных клиента Azure AD - PullRequest
0 голосов
/ 25 ноября 2018

Я успешно прошел проверку подлинности в Azure AD и получил токен доступа.И я дал разрешения API приложения Azure AD на Access Azure DevOps

. Я использую RestSharp Http Client для аутентификации

var client = new RestClient("https://login.microsoftonline.com/{tenant}/oauth2/token");
            var request = new RestRequest("", Method.POST);
            request.AddParameter("grant_type", "client_credentials");
            request.AddParameter("client_id", "00000f-0000-00-00-000000");
            request.AddParameter("client_secret", "][M.&*******?*_5z)y${*[)");
            request.AddParameter("resourse", "https://tenant.onmicrosoft.com/4815c06b-7e28-4f88-9dc8-8fe3354d5909");
            IRestResponse response = client.Execute(request);
            var content = response.Content; // raw con

Я счастлив до этого момента.Я не могу понять, как использовать токен доступа для доступа к DevOps Azure. То, что я пробовал до сих пор

 var client = new RestClient("https://app.vssps.visualstudio.com/oauth2/token");
        var request = new RestRequest("", Method.POST);
        request.AddParameter("client_id", "My APP code here";
        request.AddParameter("client_secret", "My ap secret here");
        request.AddParameter("client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer");
        request.AddParameter("client_assertion", "access token here");
        request.AddParameter("grant_type", "authorization_code");

Я получаю сообщение об ошибке "{\" Ошибка \ ": \" unsupported_grant_type\ ", \" ErrorDescription \ ": \" grant_type должен быть типом носителя ietf jwt или refresh_token \ "}"

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

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

enter image description here

После этого нам также необходимо подключить учетную запись Azure Devepops к Azure AD.

Введите адрес в браузере и введите имя пользователя и пароль, после чего вы можете получить код_ авторизации

Получить код авторизации

https://login.microsoftonline.com/{tenantId}/oauth2/authorize?resource=499b84ac-1321-427f-aa17-267ca6975798&client_id={applicationId}&response_type=code&redirect_uri={redirecturl}

Получить токен доступа

POST login.microsoftonline.com/e4c9ab4e-bd27-40d5-8459-230ba2a757fb/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Body
resource=499b84ac-1321-427f-aa17-267ca6975798&client_id={clientid}&grant_type=authorization_code&code=AQABAAIAAA..&redirect_uri={redirectUrl}

enter image description here

Тогда мы могли бы использовать токен доступа для доступа к API Azure Devops.

Мы могли бы получить более подробные шаги и демонстрационный код C # по этой ссылке .

0 голосов
/ 26 ноября 2018

Если у вас есть access_token, вы можете использовать access_token для доступа к ресурсам web api, для примера есть образец.

GET /data HTTP/1.1
Host: service.contoso.com
Authorization: Bearer
"your concrete access_token"

Вы можете щелкнуть по этой ссылке чтобы увидеть это подробно, надеюсь, что это принесет пользу.

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