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

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019 | TFS 2018

Вы можете использовать личный маркер доступа (PAT) в качестве альтернативного пароля для проверки подлинности в Azure DevOps. В этой статье показано, как создавать, использовать, изменять и отзывать PATs для Azure DevOps.

В следующем видео показано, как создать и использовать PAT.

Сведения о личных маркерах доступа

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

Если вы работаете в средствах Майкрософт, то использование учетной записи Майкрософт (MSA) или Microsoft Entra ID является приемлемым и даже рекомендуемым подходом. Но если вы работаете со сторонними инструментами, которые не поддерживают учетные записи Майкрософт и Microsoft Entra, или если вы не хотите предоставлять этим инструментам свои основные учетные данные, вы можете ограничить риск путем использования личного маркера доступа.

Можно создавать личные маркеры доступа и управлять ими одним из следующих способов:

  • пользовательский интерфейс в параметрах пользователя, который подробно описан в этой статье;
  • через API управления жизненным циклом PAT

Чтобы настроить PATs для средств, отличных от Майкрософт, используйте диспетчеры учетных данных Git или создайте их вручную. Мы рекомендуем ознакомиться с нашим руководством по проверке подлинности, чтобы помочь вам выбрать правильный механизм проверки подлинности. Для небольших проектов, требующих менее надежного решения, личные маркеры доступа являются простой альтернативой. Если пользователи не используют диспетчер учетных данных, им придется каждый раз вводить свои учетные данные.

Создание личного маркера доступа

  1. Войдите в свою организацию (https://dev.azure.com/{yourorganization}).

  2. На домашней странице откройте параметры пользователя и выберите личные маркеры доступа.

    Screenshot showing selection, Personal Access Tokens.

  3. Выберите +Создать маркер.

    Screenshot showing selection, New Token.

  4. Присвойте маркеру имя, выберите организацию, в которой вы хотите использовать маркер, а затем установите маркер автоматически истекает после заданного количества дней.

    Screenshot showing entry of basic token information.

  5. Выберите область для этого маркера, чтобы авторизовать определенные задачи.

    Например, чтобы создать маркер для включения проверки подлинности агента сборки и выпуска в Azure DevOps Services, ограничьте область маркера пулам агентов (чтение и управление). Чтобы прочитать события журнала аудита, а также управлять потоками и удалять их, выберите "Чтение журнала аудита" и нажмите кнопку "Создать".

    Screenshot showing selected scopes for a PAT.

    Примечание.

    Вам может быть запрещено создавать личные маркера доступа с полной областью действия. Если это так, значит администратор Azure DevOps включил в Microsoft Entra ID политику, которая ограничивает доступный для вас набор областей. Дополнительные сведения см. в разделе "Управление paTs" с помощью политик и ограничения создания полнофункционных область paTs. Для пользовательского ПАТ необходимого область для доступа к API управления компонентами недоступен vso.governanceв пользовательском интерфейсе.

  6. После завершения скопируйте маркер и сохраните его в безопасном расположении. Для обеспечения безопасности он снова не отображается.

    Screenshot showing how to copy the token to your clipboard.

Предупреждение

Обработайте и используйте PAT, как пароль, и сохраните его в секрете.

  1. Войдите на веб-портал (https://{server}:8080/tfs/).

  2. На домашней странице откройте свой профиль. Перейдите к сведениям о безопасности.

Screenshot showing home page, opening your profile, and the Security button.

  1. Создайте личный маркер доступа.

Screenshot showing adding a personal access token.

  1. Присвойте маркеру имя. Выберите срок действия маркера.

    Если у вас несколько организаций, вы также можете выбрать организацию, в которой вы хотите использовать маркер.

    Screenshot showing information entry, including token name and lifespan.

  2. Выберите область для этого маркера, чтобы авторизовать определенные задачи.

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

  3. По завершении скопируйте маркер. Для обеспечения безопасности он снова не отображается. Используйте этот маркер в качестве пароля. Выберите Закрыть.

    Screenshot showing created token.

Используйте PAT в любом месте, где учетные данные пользователя требуются для проверки подлинности в Azure DevOps.

Важно!

Для организаций, поддерживаемых идентификатором Microsoft Entra, у вас есть 90 дней для входа с помощью нового PAT, в противном случае считается неактивным. Дополнительные сведения см. в разделе "Частота входа пользователей" для условного доступа.

Notifications

Пользователи получают два уведомления во время существования PAT — один после создания и еще семь дней до истечения срока действия.

После создания PAT вы получите уведомление, аналогичное следующему примеру. Это уведомление подтверждает, что ваш PAT был добавлен в вашу организацию.

Screenshot showing PAT created notification.

На следующем рисунке показан пример семидневного уведомления до истечения срока действия PAT.

Screenshot showing PAT near expiration notification.

Дополнительные сведения см. в статье "Настройка SMTP-сервера" и настройка электронной почты для оповещений и запросов обратной связи.

Непредвиденное уведомление

Если вы получаете неожиданное уведомление PAT, администратор или средство, возможно, создали PAT от вашего имени. См. следующие примеры.

  • При подключении к репозиторию Azure DevOps Git через git.exe. он создает маркер с отображаемого имени, например "git: https://MyOrganization.visualstudio.com/ в MyMachine".
  • Когда вы или администратор настраиваете развертывание веб-приложения службы приложение Azure, он создает маркер с отображаемым именем, например "Перехватчики служб: : приложение Azure Служба: : развертывание веб-приложения".
  • Когда вы или администратор настраиваете веб-нагрузочное тестирование в рамках конвейера, он создает маркер с отображаемым именем, например WebAppLoadTestCDIntToken.
  • При настройке расширения обмена сообщениями интеграции Microsoft Teams он создает маркер с отображаемым именем, например "Интеграция Microsoft Teams".

Предупреждение

Если вы считаете, что ПАТ существует в ошибке, мы рекомендуем отозвать PAT. Затем измените пароль. Как пользователь Microsoft Entra проверка с администратором, чтобы узнать, использовалась ли ваша организация из неизвестного источника или расположения. См. также вопросы и ответы о случайном проверка в PAT в общедоступный репозиторий GitHub.

Использование PAT

Ваш PAT — это ваше удостоверение и представляет вас при его использовании, как пароль.

Git

Для взаимодействия с Git требуется имя пользователя, которое может быть любым, кроме пустой строки. Чтобы использовать PAT с базовой проверкой подлинности HTTP, используйте Base64-encode и $MyPat, которое входит в следующий блок кода.

В PowerShell введите следующий код.

$MyPat = 'yourPAT'

$B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("`:$MyPat"))

git -c http.extraHeader="Authorization: Basic $B64Pat" clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName


Чтобы обеспечить безопасность маркера, используйте диспетчеры учетных данных, чтобы не вводить учетные данные каждый раз. Мы рекомендуем Git Credential Manager. Требуется Git для Windows .

Существующие репозитории

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

git remote remove origin

В противном случае выполните следующую команду.

git remote add origin https://<PAT>@<company_machineName>.visualstudio.com:/<path-to-git-repo> path to git repo = <project name>/_git/<repo_name> git push -u origin --all

Использование PAT в коде

В коде можно использовать PAT.

Если вы хотите предоставить PAT через заголовок HTTP, сначала преобразуйте его в строку Base64. В следующем примере показано, как преобразовать в Base64 с помощью C#.


Authorization: Basic BASE64_USERNAME_PAT_STRING

После этого результирующая строка может быть предоставлена в виде заголовка HTTP в следующем формате.

В следующем примере используется класс HttpClient в C#.

public static async void GetBuilds()
{
    try
    {
        var personalaccesstoken = "PATFROMWEB";

        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 = client.GetAsync(
                        "https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.0").Result)
            {
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Совет

При использовании переменных добавьте $ в начале строки, как показано в следующем примере.

public static async void GetBuilds()
{
   try
  {
      var personalaccesstoken = "PATFROMWEB";

      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 = client.GetAsync(
                       $"https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.0").Result)
           {
               response.EnsureSuccessStatusCode();
               string responseBody = await response.Content.ReadAsStringAsync();
               Console.WriteLine(responseBody);
           }
       }
   }
   catch (Exception ex)
   {
       Console.WriteLine(ex.ToString());
   }
}

При работе кода рекомендуется переключаться с простой проверки подлинности на OAuth.

Дополнительные сведения и примеры использования PATS см. в следующих статьях:

Если включить обычную проверку подлинности IIS, параметры PATs недопустимы. Дополнительные сведения см. в разделе "Использование базовой проверки подлинности IIS" в локальной среде.

Изменение ПАТ

Вы можете повторно создать или расширить ПАТ и изменить его область. После восстановления предыдущий PAT больше не авторизован.

  1. На домашней странице откройте параметры пользователя и выберите " Профиль".

    Screenshot showing sequence of buttons to select to modify a PAT.

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

    Screenshot showing highlighted Edit button to modify PAT.

  3. Измените имя маркера, срок действия маркера или область доступа, связанного с маркером, и нажмите кнопку "Сохранить".

    Screenshot showing modified PAT.

Отмена ПАТ

Вы можете отозвать PAT в любое время по различным причинам.

  1. На домашней странице откройте параметры пользователя и выберите " Профиль".

    Screenshot showing sequence of buttons to select, Team Services, Preview page, and revoke a PAT.

  2. В разделе "Безопасность" выберите личные маркеры доступа. Выберите маркер, для которого требуется отозвать доступ, а затем нажмите кнопку "Отозвать".

    Screenshot showing selection to revoke a single token or all tokens.

  3. Выберите " Отменить" в диалоговом окне подтверждения.

    Screenshot showing confirmation screen to revoke PAT.

Вопросы и ответы

Вопрос. Что происходит с PAT, если учетная запись пользователя отключена?

Ответ. После удаления пользователя из Azure DevOps ПАТ недействителен в течение 1 часа. Если ваша организация подключена к идентификатору Microsoft Entra, ПАТ также является недействительным в идентификаторе Microsoft Entra, так как он принадлежит пользователю. Рекомендуется, чтобы пользователь поворачивал ПАТ на другого пользователя или учетную запись службы, чтобы обеспечить выполнение служб.

Вопрос. Существует ли способ обновить PAT через REST API?

Ответ. Да, существует способ продления, управления и создания PATs с помощью API управления жизненным циклом PAT. Дополнительные сведения см. в разделе "Управление PATs" с помощью REST API и наших часто задаваемых вопросов.

Вопрос. Можно ли использовать базовую проверку подлинности со всеми REST API Azure DevOps?

Ответ. Нет. Вы можете использовать базовую проверку подлинности с большинством REST API Azure DevOps, но организации и профили поддерживают только OAuth. Дополнительные сведения см. в разделе "Управление PATs" с помощью REST API.

Вопрос. Что произойдет, если я случайно проверка мой PAT в общедоступный репозиторий на GitHub?

Ответ. Azure DevOps сканирует paTs проверка в общедоступные репозитории на GitHub. Когда мы найдем утечку маркера, мы немедленно отправим подробное уведомление по электронной почте владельцу маркера и регистрируем событие в журнал аудита организации Azure DevOps. Если вы не отключили политику автоматически отозванных личных маркеров доступа, мы немедленно отменяем утечку PAT. Мы рекомендуем пострадавшим пользователям немедленно устранить проблему, отменив утечку маркера и заменив его новым маркером.

Дополнительные сведения см. в статье "Отмена утечки PAT" автоматически.

Вопрос. Можно ли использовать личный маркер доступа в качестве ApiKey для публикации пакетов NuGet в веб-канале Azure Artifacts с помощью командной строки dotnet/nuget.exe?

Ответ. Нет. Azure Artifacts не поддерживает передачу личного маркера доступа в качестве ApiKey. При использовании локальной среды разработки рекомендуем установить поставщик учетных данных Azure Artifacts для проверки подлинности с помощью Azure Artifacts. Дополнительные сведения см. в следующих примерах: dotnet, NuGet.exe. Если вы хотите опубликовать пакеты с помощью Azure Pipelines, используйте задачу проверки подлинности NuGet для проверки подлинности с помощью примера веб-канала.

Вопрос. Почему мой PAT перестал работать?

Ответ. Проверка подлинности PAT требует регулярного входа в Azure DevOps с помощью полного потока проверки подлинности. Один раз в 30 дней достаточно для многих, но вам может потребоваться выполнить вход чаще, чем в зависимости от конфигурации Microsoft Entra. Если ваш PAT перестает работать, сначала попробуйте войти в вашу организацию, чтобы убедиться, что вы перейдете по полному запросу проверки подлинности. Если ваш PAT по-прежнему не работает после этого, проверка, чтобы узнать, истек ли срок действия ВАШЕГО PAT.