Usar tokens de acesso pessoal

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Você pode usar um token de acesso pessoal (PAT) como uma senha alternativa para autenticar no Azure DevOps. Neste artigo, mostramos como criar, usar, modificar e revogar PATs para o Azure DevOps.

O vídeo a seguir mostra como criar e usar um PAT.

Sobre PATs

Um token de acesso pessoal contém suas credenciais de segurança para o Azure DevOps. Um PAT identifica você, suas organizações acessíveis e os escopos de acesso. Dessa forma, eles são tão críticos quanto as senhas, portanto, você deve tratá-las da mesma maneira.

Se você estiver trabalhando em ferramentas da Microsoft, sua MSA (conta Microsoft) ou o Microsoft Entra ID será uma abordagem aceitável e compatível. Mas, se você estiver trabalhando com ferramentas de terceiros que não são compatíveis com contas do Microsoft Entra, ou se não desejar fornecer suas principais credenciais para a ferramenta, use PATs para limitar seu risco.

Você pode criar e gerenciar seus PATs de uma das seguintes formas:

  • pela interface do usuário nas configurações do usuário, que é descrita em detalhes neste artigo
  • por meio da API de gerenciamento do ciclo de vida do PAT

Para configurar PATs para ferramentas que não sejam da Microsoft, use os gerenciadores de credenciais do Git ou crie-os manualmente. Recomendamos que você revise nossas diretrizes de autenticação para ajudá-lo a escolher o mecanismo de autenticação correto. Para projetos menores que exigem uma solução menos robusta, os PATs são uma alternativa simples. A menos que os usuários estejam usando um gerenciador de credenciais, eles precisam inserir suas credenciais sempre.

Criar um PAT

  1. Entre em sua organização (https://dev.azure.com/{yourorganization}).

  2. Na sua página inicial, abra as configurações do usuário e selecione Tokens de acesso pessoal.

    Captura de tela mostrando seleção, Tokens de Acesso Pessoal.

  3. Selecione + New Token.

    Captura de tela mostrando seleção, Novo Token.

  4. Nomeie seu token, selecione a organização onde deseja usar o token e defina seu token para expirar automaticamente após um número definido de dias.

    Captura de tela mostrando a entrada de informações básicas do token.

  5. Selecione os escopos desse token a serem autorizados para suas tarefas específicas.

    Por exemplo, para criar um token para permitir que um agente de compilação e liberação se autentique nos Serviços de DevOps do Azure, limite o escopo do token a Pools de Agentes (Leia e gerencie). Para ler eventos de log de auditoria e gerenciar e excluir fluxos, selecione Ler Log de Auditoria e selecione Criar.

    Captura de tela mostrando escopos selecionados para um PAT.

    Observação

    Você pode ser impedido de criar PATs de escopo completo. Nesse caso, o Administrador do Azure DevOps no Microsoft Entra ID habilitou uma política que limita você a um conjunto de escopos específico, definido e personalizado. Para obter mais informações, consulte Gerenciar PATs com políticas/Restringir a criação de PATs com escopo completo. Para um PAT definido personalizado, o escopo necessário para acessar a API de Governança de Componente, vso.governance, não é selecionável na interface do usuário.

  6. Quando terminar, copie o token e armazene-o em um local seguro. Para sua segurança, ele não é exibido novamente.

    Captura de tela mostrando como copiar o token para a área de transferência.

Aviso

Trate e use um PAT como sua senha e mantenha-o em segredo.

Use seu PAT em qualquer lugar onde suas credenciais de usuário sejam necessárias para autenticação no Azure DevOps.

Importante

Para organizações com suporte do Microsoft Entra ID, você tem 90 dias para entrar com seu novo PAT, caso contrário, ele será considerado inativo. Para obter mais informações, consulte Frequência de entrada do usuário para acesso condicional.

Notificações

Os usuários recebem duas notificações durante a vida útil de um PAT - uma após a criação e outra sete dias antes da expiração.

Depois de criar um PAT, você recebe uma notificação semelhante ao exemplo a seguir. Essa notificação confirma que seu PAT foi adicionado à sua organização.

Captura de tela mostrando a notificação criada pelo PAT.

A imagem a seguir mostra um exemplo da notificação de sete dias antes que seu PAT expire.

Captura de tela mostrando a notificação de expiração do PAT.

Para obter mais informações, consulte Configurar um servidor SMTP e personalizar o email para alertas e solicitações de comentários.

Notificação inesperada

Se você receber uma notificação PAT inesperada, um administrador ou ferramenta pode ter criado um PAT em seu nome. Consulte os exemplos a seguir.

  • Quando você se conecta a um repositório Git do Azure DevOps por meio do git.exe. ele cria um token com um nome de exibição como "git: https://MyOrganization.visualstudio.com/ on MyMachine".
  • Quando você ou um administrador configura uma implantação de aplicativo Web do Serviço de Aplicativo do Azure, ele cria um token com um nome de exibição como "Ganchos de Serviço: : Serviço de Aplicativo do Azure: : Implantar aplicativo Web".
  • Quando você ou um administrador configura o teste de carga da Web como parte de um pipeline, ele cria um token com um nome de exibição como "WebAppLoadTestCDIntToken".
  • Quando uma Extensão de Mensagens de Integração do Microsoft Teams é configurada, ela cria um token com um nome de exibição como "Integração do Microsoft Teams".

Aviso

Se você acredita que um PAT existe por engano, sugerimos que você revogue o PAT. Em seguida, altere sua senha. Como usuário do Microsoft Entra, verifique com o administrador se sua organização foi usada de uma fonte ou local desconhecido. Consulte também as Perguntas frequentes sobre a verificação acidental de um PAT em um repositório público do GitHub.

Usar um PAT

Seu PAT é sua identidade e representa você quando você o usa, assim como uma senha.

Git

As interações do Git exigem um nome de usuário, que pode ser qualquer coisa, exceto a cadeia de caracteres vazia. Para usar um PAT com autenticação básica HTTP, use Base64-encode para $MyPat, que está incluído no bloco de código a seguir.

No PowerShell, insira o código a seguir.

$MyPat = 'yourPat'
$headerValue = "Authorization: Basic " + [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $MyPat))
$env:GIT_AUTH_HEADER = $headerValue

git --config-env=http.extraheader=GIT_AUTH_HEADER clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName

Para manter seu token mais seguro, use os gerentes de credenciais para que você não precise inserir suas credenciais todas as vezes. Recomendamos o Git Credential Manager. O Git para Windows é necessário.

Repositórios existentes

Para repositórios existentes, se você já tiver adicionado a origem usando o nome de usuário, execute o seguinte comando primeiro.

git remote remove origin

Caso contrário, execute o seguinte comando.

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

Use um PAT em seu código

Você pode usar um PAT em seu código.

Se você deseja fornecer o PAT por meio de um cabeçalho HTTP, primeiro converta-o em uma cadeia de caracteres Base64. O exemplo a seguir mostra como converter para Base64 usando C#.


Authorization: Basic BASE64_USERNAME_PAT_STRING

A cadeia de caracteres resultante pode então ser fornecida como um cabeçalho HTTP no seguinte formato.

O exemplo a seguir usa a classe HttpClient em 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());
    }
}

Dica

Quando você estiver usando variáveis, adicione um $ no início da cadeia de caracteres, como no exemplo a seguir.

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());
   }
}

Quando seu código está funcionando, é um bom momento para mudar da autenticação básica para OAuth.

Para obter mais informações e exemplos de como usar PATs, consulte os seguintes artigos:

Modificar um PAT

Você pode regenerar ou estender um PAT e modificar seu escopo. Após a regeneração, o PAT anterior não é mais autorizado.

  1. Na home page, abra as configurações do usuário e selecione Perfil.

    Captura de tela mostrando a sequência de botões a serem selecionados para modificar um PAT.

  2. Em Segurança, selecione Tokens de acesso pessoais. Selecione o token que deseja modificar e Editar.

    Captura de tela mostrando o botão Editar realçado para modificar o PAT.

  3. Edite o nome do token, a expiração do token ou o escopo de acesso associado ao token e selecione Salvar.

    Captura de tela mostrando PAT modificado.

Revogar um PAT

Você pode revogar um PAT a qualquer momento, por vários motivos.

  1. Na home page, abra as configurações do usuário e selecione Perfil.

    Captura de tela mostrando a sequência de botões para selecionar, Team Services, Visualizar página e revogar um PAT.

  2. Em Segurança, selecione Tokens de acesso pessoais. Selecione o token para o qual você deseja revogar o acesso e, em seguida, selecione Revogar.

    Captura de tela mostrando a seleção para revogar um único token ou todos os tokens.

  3. Selecione Revogar na caixa de diálogo de confirmação.

    Captura de tela mostrando a tela de confirmação para revogar o PAT.

Perguntas Frequentes

P: O que acontece com um PAT se uma conta de usuário for desativada?

R: Depois que um usuário é removido do Azure DevOps, o PAT é invalidado dentro de 1 hora. Se sua organização estiver conectada à ID do Microsoft Entra, o PAT também será invalidado na ID do Microsoft Entra, pois pertence ao usuário. Recomendamos que o usuário gire seu PAT para outra conta de usuário ou serviço para manter os serviços em execução.

P: Existe uma maneira de renovar um PAT via API REST?

R: Sim, há uma maneira de renovar, gerenciar e criar PATs usando nossas APIs de gerenciamento do ciclo de vida do PAT. Para obter mais informações, consulte Gerenciar PATs usando a API REST e nossas perguntas frequentes.

P: Posso usar a autenticação básica com todas as APIs REST do Azure DevOps?

R: Não. Você pode usar a autenticação básica com a maioria das APIs REST do Azure DevOps, mas as organizações e os perfis oferecem suporte apenas a OAuth. Para obter mais informações, consulte Gerenciar PATs usando a API REST.

P: O que acontece se eu acidentalmente verificar meu PAT em um repositório público no GitHub?

R: O Azure DevOps verifica se há PATs com check-in em repositórios públicos no GitHub. Quando encontramos um token vazado, enviamos imediatamente uma notificação detalhada por email ao proprietário do token e registramos um evento no log de auditoria da sua organização de DevOps do Azure. A menos que você desabilite a política Revogar automaticamente tokens de acesso pessoal vazados, revogamos imediatamente o PAT vazado. Encorajamos os usuários afetados a mitigar imediatamente , revogando o token vazado e substituindo-o por um novo token.

Para obter mais informações, consulte Revogar PATs vazados automaticamente.

P: Posso usar um token de acesso pessoal como uma ApiKey para publicar pacotes NuGet em um feed de Artefatos do Azure usando a linha de comando dotnet/nuget.exe?

R: Não. O Azure Artifacts não tem suporte para a transmissão de um token de acesso pessoal como uma ApiKey. Ao usar um ambiente de desenvolvimento local, recomendamos instalar o Provedor de Credenciais do Azure Artifacts para autenticar com o Azure Artifacts. Para obter mais informações, consulte os seguintes exemplos: dotnet e NuGet.exe. Se você quiser publicar seus pacotes usando o Azure Pipelines, use a tarefa NuGet Authenticate para autenticar com seu exemplo de feed.

P: Por que meu PAT parou de funcionar?

R: A autenticação PAT exige que você entre regularmente no Azure DevOps usando o fluxo de autenticação completo. Uma vez a cada 30 dias é suficiente para muitos, mas talvez seja necessário entrar com mais frequência do que isso, dependendo da configuração do Microsoft Entra. Se o PAT parar de funcionar, primeiro tente entrar na sua organização, garantindo que você passe pelo prompt de autenticação completo. Se o PAT continuar a não funcionar depois disso, verifique se o PAT expirou.