Аутентификация REST API с помощью OAuth в VSTS/TFS 2017

Я пытаюсь аутентифицировать вызов REST с помощью OAuth, но не смог найти ни одного примера по этому поводу. Пожалуйста, будьте любезны, чтобы помочь мне в этом (предоставить образец).

Я имею в виду приведенную ниже документацию от Microsoft.

https://www.visualstudio.com/en-us/docs/integrate/get-started/rest/basics

Я могу аутентифицировать это с помощью NTLM (ниже пример, который я использую). Для этого доступна библиотека узлов (https://www.npmjs.com/package/httpntlm). Но мне нужно что-то подобное для OAuth.

httpntlm.patch(options, function(err,res) {
            console.log("patch complete");
            console.log(res.body);
})

person Lalindu    schedule 13.03.2017    source источник
comment
как я могу посчитать всех своих пользователей с помощью vsts api? есть ли какой-нибудь простой документ с php   -  person saber tabatabaee yazdi    schedule 22.02.2021


Ответы (2)


Вы можете авторизовать доступ к REST API с помощью OAuth. 2.0 в VSTS. На данный момент он доступен только с VSTS, TFS2017 не поддерживается. Вы также можете проверить этот вопрос: Аутентификация REST API TFS 2015. И была связанная ссылка голос пользователя.

Сначала вы зарегистрируете свое веб-приложение и получите идентификатор приложения из Visual Studio Team Services. Используя этот идентификатор приложения, вы отправите своих пользователей в Visual Studio Team Services, чтобы разрешить вашему приложению доступ к их учетным записям. Как только они это сделают, вы будете использовать эту авторизацию, чтобы получить токен доступа для этого пользователя. Когда вы вызываете API-интерфейсы Visual Studio Team Services от имени этого пользователя, вы будете использовать маркер доступа этого пользователя.

введите здесь описание изображения

Пример C#, который реализует OAuth для вызова REST API Visual Studio Team Services в GitHub для справки: образец vsts-dotnet-oauth

person PatrickLu-MSFT    schedule 13.03.2017

Я не уверен в технологиях, которые вы используете для достижения этой цели, но если ваше приложение является приложением .Net/.Net Core MVC, Microsoft предоставила пример кода для него: Пример кода VSTS C#

Однако, если ваше приложение похоже на мое, SPA (на angular) и серверную часть .Net Core, то нет документа, четко описывающего, какие части должны идти, куда и как в таком случае добиться потока OAuth. Чтобы ответить на этот вопрос, я добился этого следующим образом:

  1. Зарегистрируйте свое приложение на VSTS с URL-адресом обратного вызова, указывающим на маршрут обратного вызова в вашем приложении пользовательского интерфейса.
  2. Добавьте функцию авторизации на серверную часть, чтобы выполнить вызов конечной точки авторизации VSTS.
  3. Имейте кнопку/ссылку в пользовательском интерфейсе, где вы хотели бы подключиться к VSTS API, указав на функцию авторизации на бэкэнде. Причина для вызова конечной точки авторизации vsts из бэкэнда, а не пользовательского интерфейса, заключается в том, что авторизация vsts возвращает ответ перенаправления 302, а angular 4+ все еще имеет четкий способ справиться с этим. .Net MVC имеет метод перенаправления, который очень хорошо с этим справляется.
  4. После выполнения вызова для авторизации вам будет представлен экран «Принять/Отклонить», показывающий все области действия.
  5. Как только пользователь примет это, он будет перенаправлен на URL-адрес обратного вызова, который указывает на ваш пользовательский интерфейс.
  6. Получите код авторизации из URL-адреса обратного вызова в пользовательском интерфейсе, извлеките код и передайте его в API.
  7. API вызовет конечную точку токена vsts, передав код аутентификации и секрет клиента.
  8. API получит токен аутентификации и токен обновления.
  9. Используйте токен аутентификации для выполнения вызовов API VSTS и сохранения токена обновления (есть много статей, в которых упоминается, как безопасно обращаться с токенами).

Вот и все, поток OAuth может быть достигнут в Angular и .Net Core описанным выше способом.

Обратите внимание, что это не задокументировано Microsoft, поэтому в этом подходе могут быть недостатки, которые я готов изучить и исправить.

Пожалуйста, прокомментируйте, чтобы получить образец репо.

person Nikheel    schedule 19.04.2020
comment
На каком стеке технологий находится ваше приложение? - person Nikheel; 19.04.2020