Как просто получить токен на предъявителя для отправки запросов в Azure DevOps API? - PullRequest
0 голосов
/ 18 февраля 2020

Мне нужно создать организационный канал для размещения пакетов nuget, совместно используемых проектами в нашей среде Azure DevOps.

После нескольких неудачных попыток и исследований я обнаружил, что единственный способ создать организационный канал - это Разработано из уст Microsoft, Azure DevOps API.

Источник заявки: Этот вопрос по сообществу разработчиков VS и Документы MS по каналам в рамках проекта

По сути, мне просто нужно иметь возможность выполнить POST здесь: https://feeds.dev.azure.com/ {организация} / _ apis / packaging / feeds? Api-version = 5.1-preview.1

с телом:

{
    "name": "{myfeedname}",
    "hideDeletedPackageVersions": true,
    "upstreamEnabled": true
}

И, конечно же, жетон на предъявителя для аутентификации себя. Это тот момент, когда я в замешательстве.

Какой самый простой способ получить его? Я вошел в систему через учетную запись Microsoft AD моей компании в браузере компьютера на Azure DevOps. Я не вижу токенов на предъявителя, которые я могу «украсть» для использования в PostMan в моих инструментах разработки для браузера.

Документы API описывают некоторую соответствующую информацию, но я запутался в как использовать его в Почтальоне:

Безопасность oauth2

Тип: oauth2

Поток: accessCode

URL авторизации: https://app.vssps.visualstudio.com/oauth2/authorize&response_type=Assertion

URL-адрес токена: https://app.vssps.visualstudio.com/oauth2/token?client_assertion_type=urn: ietf: params: oauth: тип подтверждения клиента: jwt-bearer & grant_type = urn: ietf: params: oauth: тип-гранта: jwt- Носитель

Области Имя Описание

vso.packaging_write Предоставляет возможность создавать и читать каналы и пакеты.

Здесь представлен интерфейс в Postman для OAuth2 :

Postman interface for setting up OAuth2

Я могу видеть, как информация в документах относится к полям 1 - 2 - 3 - 4, но затем, какой URL обратного вызова я должен использовать? Какие полномочия? мой адрес электронной почты Microsoft + пароль от AD?

Я попробовал это, и все, что я, кажется, получаю от Почтальона:

{"$id":"1","innerException":null,"message":"A potentially dangerous Request.Path value was detected from the client (&).","typeName":"System.Web.HttpException, System.Web","typeKey":"HttpException","errorCode":0,"eventId":0}

TLDR

Как правильно перейти к получению токена с Почтальоном, или другой инструмент для ручного выполнения моего одноразового запроса к Azure DevOps REST API?

примечания:

Следующая информация здесь: Невозможно получить код авторизации для Devops, используя Postman oAuth2. 0 , ведущий здесь: https://github.com/Microsoft/azure-devops-auth-samples/tree/master/OAuthWebSample, я понимаю, что мне нужно зарегистрироваться и запустить целое веб-приложение. Я правильно понимаю? Я там более простой способ?

1 Ответ

1 голос
/ 19 февраля 2020

Я понимаю, что мне нужно зарегистрироваться и запустить целое веб-приложение. Я правильно понимаю? У меня там более простой способ?

Да, вы правы. Вы должны зарегистрировать целое веб-приложение.

В качестве интерфейса в Postman для OAuth2 нам необходимо предоставить CallbackUrl, ClientID, ClientSecret и так далее. Затем мы проверяем документ Запрашивая токен OAuth 2.0 , мы можем узнать, что Callback URL:

URL-адрес обратного вызова клиентского приложения, перенаправленный после auth, и это должно быть зарегистрировано у провайдера API .

Итак, нам нужно зарегистрировать клиентское приложение OAuth в Azure DevOps (https://app.vsaex.visualstudio.com/app/register), затем мы могли бы получить следующую информацию, например:

enter image description here

Вы можете проверить документ Авторизовать доступ к VSTS REST API с помощью OAuth 2.0 для получения более подробной информации.

AFAIK, в настоящее время не существует более простого способа получить токен-носитель для отправки запросов в Azure DevOps API.

Надеюсь, это поможет.

...