Подключение к службе TF без ввода учетных данных LiveID

Как правило, при подключении к службе Team Foundation Service пользователь видит веб-страницу для входа с помощью учетной записи Microsoft, также называемой LiveID. Выполняя вход, пользователь может установить флажок сохранения своей учетной записи Microsoft. В этом случае ее не придется вводить заново, если только не допускать больших перерывов между сеансами входа (тогда система запросит данные еще раз).

Это очень удобно для людей, но как быть, если подключение необходимо выполнить для приложения или веб-службы? С этой целью в программном коде следует применять «альтернативные учетные данные», использование которых необходимо разрешить в параметрах учетной записи. Это тот же самый параметр, который используется при включении базовой аутентификации для git-tf. Затем можно написать программный код, в котором для подключения к службе будут использоваться эти учетные данные.

В долговременной перспективе мы также добавим поддержку OAuth, однако она еще не готова.

Включение альтернативных учетных данных

Прежде всего эту функцию необходимо включить. Сначала откройте в браузере свою учетную запись или проект, щелкните свое имя в правом верхнем углу, а затем щелкните My Profile (Мой профиль).

myprofile

В диалоговом окне User Profile (Профиль пользователя) щелкните вкладку Credentials (Учетные данные).

enablecreds

Укажите пароль и сохраните изменения.

password

Использование в коде альтернативных учетных данных

Перед выполнением описанных ниже действий убедитесь, что на вашем компьютере установлена Visual Studio 2012 с обновлением 1 или более новая версия. В состав этого обновления входят расширения для объектной модели клиента TFS, поддерживающие использование альтернативных учетных данных.

Самый простой способ получения новейших обновлений — щелкнуть всплывающее уведомление на панели задач Windows или в Visual Studio перейти в раздел Tools (Инструменты) –> Extensions and Updates… (Расширения и обновления...), щелкнуть Updates (Обновления), затем Product Updates (Обновления продукта) и установить новейшее обновление. Это обновление также можно загрузить здесь.

Чтобы убедиться в наличии установленного Visual Studio с обновлением 1 или более новой версии, выберите Help (Справка) –> About Microsoft Visual Studio (О Microsoft Visual Studio).

vshelp

Завершив настройку учетных данных, давайте воспользуемся ими, создав простое консольное приложение.

  

Создав новое консольное приложение, добавьте ссылку на библиотеку Microsoft.TeamFoundation.Client.dll, которая входит в состав ReferenceAssemblies версии 2.0. Объектная модель клиента для TFS практически целиком разработана с помощью .NET 3.5 (CLR 2.0) для поддержки запуска веб-частей TFS в SharePoint.

image

Ниже приведен пример кода:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Text;

using System.Threading.Tasks;

 

using Microsoft.TeamFoundation.Client;

 

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            NetworkCredential netCred = new NetworkCredential(

                "someone@yahoo.com",

                "password");

            BasicAuthCredential basicCred = new BasicAuthCredential(netCred);

            TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);

            tfsCred.AllowInteractive = false;

 

            TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(

                new Uri("https://YourAcct.visualstudio.com/DefaultCollection"),

                tfsCred);

 

            tpc.Authenticate();

 

            Console.WriteLine(tpc.InstanceId);

        }

    }

}

Я добавил два оператора using, один для System.Net, чтобы получать NetworkCredential, а другой для Microsoft.TeamFoundation.Client, для доступа к тем классам TFS, которые нам понадобятся.

Сначала мы создадим стандартный объект NetworkCredential с именем пользователя (адрес электронной почты будет совпадать с данными вашей учетной записи Microsoft) и паролем, который вы создали для альтернативных учетных данных. В объекте TfsClientCredentials мы присваиваем параметру AllowInteractive значение false, чтобы отключить появление диалогового окна при использовании неверных учетных данных.

При создании коллекции TfsTeamProjectCollection мы должны указать URL-адрес коллекции и учетные данные. Обратите внимание, что все соединения с учетными записями TF Service требуют использования протокола HTTPS. В настоящее время каждой учетной записи в TF Service соответствует одна коллекция, поэтому она всегда называется DefaultCollection.

Наконец, мы вызываем метод Authenticate() с целью проверки правильности указанных учетных данных и тестирования работоспособности кода, для чего на экран выводится уникальный идентификатор InstanceId этой коллекции.

Теперь приложения, которые не запрашивают ввод учетных данных, могут пользоваться всеми возможностями клиентской объектной модели TFS с помощью службы TF Service.

Удачи!

Comments